While Learning Typo3
To clear all possible misunderstandings: I am not an expert in Typo3-related themes. I am tryping to learn Typo3 and to document obstacles that come into my way, in the hope that may be helpful. If your favorite search engine lead you to this page and you can not find the expected information here: I have moved some articles to subpages and am rearranging them as the article base grows. Please have a look at the links at the end of this page.
Using the Crawler
You should use the crawler, and this is why:
- The page cache gets emptied from time to time, so the first visitor of a page after the emptying has to wait. The crawler refreshes the cache.
- The indexed search parses only pages that are viewed or crawled.
The crawler gets installed like any extension. You may change the configuration at Settings/Extension configuration. For me, the default settings look ok. Now, you go to list view, select your root page and click on the plus for adding something. Choose site crawler, crawler configuration. Give a suitable name to your configuration, check all the plugins you need (indexed search, e.g.), save your config.
On the left toolbar, choose Info, still having your root page selected. In the top menu, you can now select site crawler, then Start crawling, and select your previously created configuration. You may now crawl your pages. Before doing that, you may want to choose a reasonable depth, e.g. infinite. The crawling process is quite fast, even on a slow internet connection.
If anything runs fine, you can proceed to automatically scheduling your crawler process. The crawler manual is fine for this.
Utilizing schema.org markup
Just in case you don't know: schema.org defines structured attributes for your content. It helps search engines to gain knowledge about the things you write about. There are several Typo3 extensions to support schema.org markup. tt_address uses schema.org markup, and this shows the path to excellence: You need to have structured data and the structure of your data has to be emphasized by schema.org markup. I tested the following two extensions for explicitly adding schema.org markup.
The schema.org plugin
With Typo3, there is a schema.org plugin. You have to include the plugin template and to define properties within the TypoScript setup. From the distinct ways of defining the data, Google appears to prefer json, and the plugin expects you to write TypoScript and transforms this into json. You can find the results within the head of your page. I, personally, would prefer to enter schema.org markup within the texts I write, but alas.
There is an example definition with the plugin manual, so going should be easy. In fact, it isn't that simple. The example shown in the manual is actually included, so if you do not define all the things mentioned there, you will find rests ot the sample code. Quite annoying, if you do not know. The solution is easy: Clear the code before defining your own. So you start with
plugin.tx_schemaorg.settings.page >
and then you start your definitions. When done, show your page, open your browser's developer tools and inspect the head. Search for
<script type="application/ld+json">
and inspect the result.
The schema plugin
There also is a plugin called schema. With schema, you can choose the kind of page for any of your pages, e.g. AboutPage or so. There also is an API for adding schema.org markup to data rendered by your extensions. Installation and use is quite painless.
Polishing the plain_faq plugin
Plain_faq is an extension that allows to create faq records and to display them. In some ways it reminds me to the News plugin. You may use list or detail view of your questions and answers. Adding schema.org markup to the detail view is cool, as it e.g. enables google to answer user questions with the information you supply – see here. For this, you have to replace the detail view template by your own (please keep in mind: you do not replace the template, you supply an additional path). Mine looks like this, copied and edited from Detail.html out of the plain_faq package:
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="main">
<f:comment> just two divs to add schema.org markup </f:comment>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h2 itemprop="name">{faq.question}</h2>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
{faq.answer -> f:format.html()}
</div>
<f:comment> I have decided to close the outer div after
categories, tags, files, and images, but you also could do it right here </f:comment>
<f:if condition="{faq.categories}">
<f:comment> several lines omitted </f:comment>
</f:if>
<f:comment> Here the div gets closed.</f:comment></div>
</f:section>
</html>
I hope this serves as an example of how easy adding schema.org markup really is (as long as already you got structured data).
Utilizing redirects
Sometimes, redirects get in your way, but they are useful. As I moved my homepage to Typo3, I could not (and did not want to) keep the structure. From Google search console I knew that there were external links to some items on my site. This is where the Redirects module shines. Adding redirects is easy. I copied the old urls from Google search console and added a redirect. The options are similiar to the options when you add a link, so you can link not only to pages, but also to files. If your site configuration is stable, you will probably want to change the status code from 307 to 301 (moved permanently).
On reading about Typo3
Offical Typo3 documentation is okay as a reference. It does however not suffice as a guide to utilizing the system. The Getting Started Tutorial tells you a lot about the backend. Of course you should read it and of course it is helpful. But to build your first site it is as useful as if someone had told you about a mason's tools and you then had to build a wall.
If you can read books written in german, you're in luck. Praxiswissen Typo3 by Meyer and Helmich fills the gap described above and also tells you about best practices. I got the 10th edition, written for Typo3 v.9, but I found it still useful for v.10. Experience with HTML and CSS mandatory, general programming experience helpful.
Choosing a CMS – why Typo3?
Most Websites (about 70%) use WordPress. This is fine for small sites. I had to use something bigger. It also was important to have fine control over editor's rights, so Joomla! could not be used.
Commercial systems were not an option. I also decided to use a system that has a decent market share and is under active development, because I do not want to migrate the system in a year or so and, because I do not want to be hacked. I also wanted a system that runs on some big websites. So three systems remained (I hope I have not missed a suitable system).
- Drupal fulfills all the requirements mentioned, but I miss a decent roadmap, and – as far as I can tell – transition from one major release to the next is hard. Also, the canonical example site deGov was way too heavy for me.
- Neos looks promising, but I was neither able to get it running by installing it by hand nor with composer. I do not want to use a php web server and I do not want to run docker (looks like this is the preferred way of hosting Neos), so Neos was ruled out. If you're curious about my dislikes: Preformance matters, security matters, I want to use as system I understand, and I want to use a system that does run on my machine under similiar conditions as on the sharehoster's machine
- Typo3 is a system with a long history. This is an advantage, but also in some respect a disadvantage. Googling your problems you often find outdated solutions, looking for extensions, you find a lot that do not work with up-to-date versions of Typo3. But I was able to install it by hand (haven't even tried composer), got it working. There is a definitive roadmap for the next years and transition from v9 to v10 seemed not to be hard, so hopefully, transition to the next version will not be hard either.