typo3_9_5_seo_sites_routing

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
typo3_9_5_seo_sites_routing [06/05/2019 23:20]
Thomas Berscheid [Config.yaml - Sitemap Configuration]
typo3_9_5_seo_sites_routing [05/11/2020 22:31] (aktuell)
Thomas Berscheid [TYPO3 9.5 und 10.4]
Zeile 1: Zeile 1:
-====== TYPO3 9.5 ======+====== TYPO3 9.5 und 10.4 SEO und Routing ======
  
 +Die Version **9.5** von TYPO3 brachte eine wichtige Verbesserung beim Routing in der Webseite. Dies hat Auswirkungen auf die Erstellung von Umleitungen, die Einbindung einer Sitemap und weitere Funktionen, die mit der Generierung von Links zu tun haben.
 +
 +Mit der Version **10.4** von TYPO3 sind diese Funktionen noch einmal ergänzt und verbessert worden, so werden z. B. nun automatisch Umleitungen angelegt, wenn man das Feld ''URL-Segment'' bearbeitet. Die unten beschriebenen Funktionen und die damit verbundenen Sourcen haben sich jedoch nicht geändert.
 ===== SEO mit Sites ===== ===== SEO mit Sites =====
  
Zeile 13: Zeile 16:
 ==== Sites anlegen ==== ==== Sites anlegen ====
  
-Über das Modul ''SITE MANAGEMENT'' -> ''Sites'' ruft man nun die Site Configuration auf. Hier legt man eine neue Seite an. +Über das Modul ''Seitenverwaltung'' -> ''Seiten'' ruft man nun die Site Configuration auf. Hier legt man eine neue Seite an. 
 Dieses Modul liefert nicht nur die Angaben zur Konfiguration der Basis URL, sondern auch andere Module. Im Gegensatz zu früheren Versionen von TYPO3 werden an dieser Stelle auch die **404** Fehlerseite und ggf. die **robots.txt** festgelegt. Aber dazu mehr weiter unten in dieser Seite! Dieses Modul liefert nicht nur die Angaben zur Konfiguration der Basis URL, sondern auch andere Module. Im Gegensatz zu früheren Versionen von TYPO3 werden an dieser Stelle auch die **404** Fehlerseite und ggf. die **robots.txt** festgelegt. Aber dazu mehr weiter unten in dieser Seite!
  
Zeile 65: Zeile 68:
     errorCode: '404'     errorCode: '404'
     errorHandler: Page     errorHandler: Page
-    errorContentSource: 'https://www.georgienseite.de/index.php?id=233'+    errorContentSource: 't3://page?uid=24'
          
 ===== Sitemap als XML für Google ===== ===== Sitemap als XML für Google =====
Zeile 106: Zeile 109:
   }   }
      
-===== config.yaml - Sitemap Configuration =====+===== config.yaml - YOAST Sitemap Configuration =====
  
- +Die TYPO3 Extension Yoast SEO liefert die Möglichkeit zur Erstellung einer Sitemapdie man bei der Google Search Console oder vergleichbaren Diensten einreichen kannDazu ist es notwendig, eine solche Konfiguration in der ''config.yaml'' hinuzufügen:
-Um das Routing der News zu perfektionierenkann man in der config.yaml noch weitere Angaben machen. Hier ein Beispiel für eine weitere Konfiguration der Datei:+
  
   routeEnhancers:   routeEnhancers:
Zeile 115: Zeile 117:
       type: PageType       type: PageType
       map:       map:
 +        feed.xml: 9818
         sitemap.xml: 1533906435         sitemap.xml: 1533906435
 +        yoast-snippetpreview.json: 1480321830
 +      
 +Um das Routing der News zu perfektionieren, kann man in der config.yaml noch weitere Angaben machen. Hier ein Beispiel für eine weitere Konfiguration der Datei:
 +
 +===== config.yaml - News Configuration =====
 +
 +  routeEnhancers:
     News:     News:
       type: Extbase       type: Extbase
Zeile 126: Zeile 136:
           _arguments:           _arguments:
             news-title: news             news-title: news
 +
 +
 +===== config.yaml - Blog Routing Configuration =====
 +
 +Der Blog auf der Webseite der Agentur IBK ist eine von Thomas Berscheid im Jahr 2015 programmierte und seitdem stetig dem aktuellen Stand des Frontend und der technischen Entwicklung des Backend angepasste TYPO3 Extension. Zur Aktualisierung der Programmierung und Konfiguration des Blog gehörte mit der Version 10.4 von TYPO3 das update der Blog Extension und der Konfiguration der Webseite, um den Blog für SEO mit lesbaren Links ausstatten zu können. Hier folgen Code Snippets für die config.yaml zur Einrichtung einer Schnittstelle für die Extension.
 +
 +==== Links für Blog Artikel auslesen ====
 +
 +Ähnlich wie bei der oben stehenden Konfiguration der News Extension können wir bei der Blog Extension festlegen, was mit bestimmten Links geschehen soll. Dazu legen wir fest,
 +  * welche Extension wir ansprechen
 +  * welches Plugin in der Extension wir laden
 +
 +Danach legen wir das Routing fest.
 +  routeEnhancers:
 +    Blog:
 +      type: Extbase
 +      extension: Ibkblog
 +      plugin: Blog
 +      routes:
 +        -
 +          routePath: '/{blog-link}'
 +          _controller: 'Blog::showByLink'
 +          _arguments:
 +            blog-link: link
 +Das Konzept des Blogs ist, die Links innerhalb der Webseite lesbar zu gestalten. In den Links sollen Begriffe stehen, die für Menschen lesbar sind und Suchmaschinen Informationen über die Inhalte des Blogpostings mitgeben. 
 +
 +Anstelle eines Links in der Form 
 +  /blog?tx_ibkblog_blog[action]=show&tx_ibkblog_blog[blog]=40&tx_ibkblog_blog[controller]=Blog           
 +schreiben wir nun einen Link ähnlich wie diesen in die Listenansicht aller Blogbeiträge:
 +  /blog/mein-neuer-blogbeitrag-november-2020
 +Der Name ''mein-neuer-blogbeitrag-november-2020'' für den Link steht in unserer Datenbank, diesen haben wir als eindeutige Bezeichnung für den Beitrag vergeben und mit diesem wird der Beitrag identifiziert. Über das Routing ordnen wir die Parameter nun folgendermaßen zu:
 +  routePath: '/{blog-link}'
 +Alles was als Parameter hinter hinter dem Basisverzeichnis des Blog steht wird ausgelesen und in eine Variable übernommen  
 +    _controller: 'Blog::showByLink'
 +Als Ziel unserer Aktion legen wir für das Plugin (hier: ''Blog'') einen Controller (hier: ''showByLink'') fest, der die Daten in unserer Extension entgegennehmen und verarbeiten soll.
 +    _arguments:
 +      blog-link: link
 +Die ausgelesene Variable blog-link übernehmen wir und weisen die einer PHP-Variablen mit dem Namen link zu, die wir dem Controller unserer Extension übergeben und mit der wir dort arbeiten können.
 +
 +==== Links zu Listen Ansicht über Routing übergeben ====
 +
 +Das oben dargestellte Konzept können wir noch ausweiten. Neben der reinen Übergabe des Links zu einem einzelnen Datensatz, im obigen Fall einem einzelnen Blogbeitrag, können wir Links zu Listenansichten definieren und auslesen.
 +
 +Das Problem dabei: Wir müssen einen Begriff definieren, mit dem unser System erkennt, dass es sich um eine bestimmte Liste handelt. Dies können wir über einen entsprechenden String bei der Generierung des Links konfigurieren. Hier ein Beispiel für ein solches Routing:
 +
 +  routePath: '/bloglist/{blog-offset}'
 +    _controller: 'Blog::list'
 +    _arguments:
 +      blog-offset: offset
 +      
 +In diesem Fall passiert Folgendes:
 +
 +  routePath: '/bloglist/{blog-offset}'      
 +Über einen Begriff (hier: ''bloglist'') findet unser Routing einen Link und liest diesen gezielt zu dem Zweck aus, für den er geschrieben wurde.
 +    _controller: 'Blog::list'
 +Alles was an Daten übergeben wird ordnen wir einem Controller (hier: ''Blog'') und in diesem einer Aktion (hier: ''list'') zu, in der die Daten weiter verarbeitet werden.
 +    _arguments:
 +      blog-offset: offset
 +Ein Parameter (hier: ''blog-offset'') wird ausgelesen und einer Variable (hier: ''offset'') zugeordnet.
 +
 +
 +==== Mehrere Parameter für Extension mit Routing übergeben ====
 +
 +Bei einem Routing, hier am Beispiel der Blog Extension von Thomas Berscheid, können wir auch mehrere Parameter übergeben. Hier ist ein Beispiel für die Übergabe mehrerer Parameter an die Extension:
 +  routePath: '/taglist/{blog-tag}-{blog-name}/{blog-offset}'
 +    _controller: 'Blog::list'
 +    _arguments:
 +      blog-tag: tagid
 +      blog-name: tagname
 +      blog-offset: offset
 +Ein solcher Link kann aussehen wie folgt:
 +  https://www.agentur-ibk.de/blog/taglist/4-Schlagwort/3
 +Sehen wir uns nun an, welche Daten aus dem Link an die Extension übergeben werden.
 +  routePath: '/taglist/{blog-tag}-{blog-name}/{blog-offset}'
 +Über einen eindeutigen statischen Bestandteil des Links (hier: ''taglist'') können wir diese Art von Link identifizieren und damit unserem System mitteilen, dass hier eine klar definierte Art von Daten kommt, die ausgelesen und der Blog Extension bereitgestellt werden soll.
 +    _controller: 'Blog::list'
 +Wir ordnen die nun folgenden Daten einem Plugin (hier: ''Blog'') und einem Controller (hier: ''list'') zu.
 +    _arguments:
 +      blog-tag: tagid
 +      blog-name: tagname
 +      blog-offset: offset
 +In diesem letzten Schritt ordnen wir diese drei ausgelesenen Parameter nun Variablen zu, die im Controller verarbeitet werden können.      
 +
 +==== Links für Routing mit Fluid Viewhelpern erstellen ====
 +
 +Wir müssen zur Umsetzung des Routing darauf achten, dass wir in unseren Übersichten nun Links so aufbauen, dass sie von unserem System auch ausgelesen werden können. Hier ist ein gekürztes Beispiel aus der IBK Blog Extension von Thomas Berscheid:
 +
 +  <a href="{f:uri.page(pageUid:pagestartuid)}/katlist/{blogkatlink}-Kategorie/{count}">
 +    {count}
 +  </a>
 +  
 +Unserem Fluid Template geben wir aus unserem Controller mehrere Werte mit:  
 +  $this->view->assign('pagestartuid', $pageStartUID);
 +  $this->view->assign('blogkatlink', $blogKatLink);
 +Der dritte Parameter count wird innerhalb des Fluid Template durch eine Iteration, also eine mit Zähler durchlaufene Schleife, erzeugt.  
 +
 +Aus diesen Parametern können wir nun unseren Link aufbauen:
 +  {f:uri.page(pageUid:pagestartuid)}
 +Mit diesem Fluid Viewhelper sagen wir unserer Extension, in welcher Seite das Frontend Plugin für die Blog Extension eingebaut ist.
 +  /katlist/
 +Mit diesem eindeutigen Identifier sprechen wir die entsprechende Funktion in unserem Routing an.
 +  /{blogkatlink}-Kategorie/
 +Wir übergeben die ID der Kategorie und den Namen einer Kategorie, den wir frei definieren können.
 +  /{count}
 +Hiermit legen wir fest, welche Seite der Listenansicht aufgerufen werden soll.
 +
 +<WRAP left info 100%>
 +Den Blog als Beispiel finden Sie hier: [[https://www.agentur-ibk.de/blog|Blog Agentur IBK]]
 +</WRAP>
  
  • typo3_9_5_seo_sites_routing.1557177625.txt.gz
  • Zuletzt geändert: 06/05/2019 23:20
  • von Thomas Berscheid