TYPO3 – XML Sitemap mit typoscript erstellen
Es gibt leider noch keine perfekte Lösung um in TYPO3 eine XML Sitemap inkl. unterschiedliche Extension usw. zu erstellen. Doch hier haben wir für Euch eine TYPO3 typoscript Lösung die an Eure Bedürfnisse angepasst werden kann.
Wir haben ein paar Beispiele auskommentiert.
Zusätzlich müsst Ihr noch die RealURL-Config anpassen.
Ladet dazu nun das TypoScript in Eure Webseite:
xml_sitemap = PAGE xml_sitemap { typeNum = 500001 config { no_cache = 1 disableAllHeaderCode = 1 xhtml_cleaning = none admPanel = 0 debug = 0 disablePrefixComment = 1 metaCharset = utf-8 additionalHeaders = Content-Type:text/xml;charset=utf-8 additionalHeaders.10.header = Content-Type:text/xml;charset=utf-8 tx_realurl_enable = 1 } wrap = <?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">|</urlset> 10 = COA 10 { # Home/RootSeite wird manuel hinzugefuegt # 1 = TEXT 1 { stdWrap { cObject = COA cObject { wrap = <url>|</url> 10 = TEXT 10 { typolink { parameter = 1 returnLast = url forceAbsoluteUrl = 1 } wrap = <loc>|</loc> } 20 = TEXT 20 { field = SYS_LASTCHANGED strftime = %Y-%m-%dT%H:%M:%SZ wrap = <lastmod>|</lastmod> } 30 = TEXT 30 { outerWrap = <changefreq>weekly</changefreq>| value = <priority>1.0</priority> } } } } 2 = HMENU 2 { special = directory # Ausgangspunkt(e) special.value = 1,2,3,4 # 1 = Standard # 2 = Erweitert # 3 = Externe URL # 4 = Shortcut # 5 = Nicht im Menu # 6 = Backend Benutzer Bereich # 7 = Mount Seite # 199 = Abstand # 254 = Sysordner # 255 = Recycler excludeDoktypes = 2,3,5,6,7,199,255 1 = TMENU 1 { expAll = 1 NO { doNotLinkIt = 1 stdWrap { cObject = COA cObject { wrap = <url>|</url> 10 = TEXT 10 { typolink { parameter.field = uid returnLast = url forceAbsoluteUrl = 1 } wrap = <loc>|</loc> } 20 = TEXT 20 { field = SYS_LASTCHANGED strftime = %Y-%m-%dT%H:%M:%SZ wrap = <lastmod>|</lastmod> } 30 = TEXT 30 { outerWrap = <changefreq>weekly</changefreq>| value = <priority>1.0</priority> } # Eigentlich doppelte da es oben ueber excludeDoktypes geregelt werden kann #if.isFalse.field = shortcut } } } } 2 < .1 2.NO.stdWrap.cObject.30.value = <priority>0.9</priority> 3 < .1 3.NO.stdWrap.cObject.30.value = <priority>0.8</priority> 4 < .1 4.NO.stdWrap.cObject.30.value = <priority>0.7</priority> 5 < .1 5.NO.stdWrap.cObject.30.value = <priority>0.6</priority> 6 < .1 6.NO.stdWrap.cObject.30.value = <priority>0.5</priority> 7 < .6 8 < .6 9 < .6 10 < .6 } # # metaMenu # 3 < .10 # 3 { # special = directory # special.value = x,x,x # # 1.NO.stdWrap.cObject.30.value = <priority>0.8</priority> # } # # # includeNotInMenu # 4 < .10 # 4 { # special = list # special.value = x,x # excludeDoktypes = # includeNotInMenu = 1 # # 1.NO.stdWrap.cObject.30.value = <priority>0.8</priority> # } # News 5 = COA 5 { 10 = CONTENT 10 { table = tx_news_domain_model_news select { orderBy = title ASC languageField = sys_language_uid # Sysordner mit tx_news Datensätzen pidInList = 12 # Nur News anzeigen # externe / interne News werden nicht ausgegeben where = type=0 } renderObj = COA renderObj { stdWrap.wrap = <url>|</url> 1 = TEXT 1 { # News-Detailseite typolink.parameter = 13 typolink.additionalParams = &tx_news_pi1[controller]=News&tx_news_pi1[action]=detail&tx_news_pi1[news]={field:uid} typolink.additionalParams.insertData = 1 typolink.returnLast = url typolink.forceAbsoluteUrl = 1 wrap = <loc>|</loc> } 2 = TEXT 2 { field = tstamp strftime = %Y-%m-%dT%H:%M:%SZ wrap = <lastmod>|</lastmod> } 3 = TEXT 3.value = <priority>0.7</priority><changefreq>weekly</changefreq> } } } } }
Passt nun noch die ID´s mit Euren eigenen TYPO3 Seiten ID´s an.
Ihr könnt nun auch andere Extension´s mit hinzufügen, wie in dem Beispiel die tx_news Extension.
Anstatt „special = directory“ könnt Ihr natürlich auch „special = list“ verwenden. Falls Ihr jedoch „Systemordner“ als Seiten-Aufteilung verwendet, so müsst ihr „special = directory“ verwenden.
Hier noch die RealURL Anpassungen:
... 'fileName' => array ( 'defaultToHTMLsuffixOnPrev' => 0, 'acceptHTMLsuffix' => 1, 'index' => array ( 'print' => array ( 'keyValues' => array ( 'type' => 98, ), ), 'rss.xml' => array( 'keyValues' => array( 'type' => 99, ), ), 'sitemap.xml' => array( 'keyValues' => array( 'type' => 500001, ), ), ), ), ....
Die XML Sitemap sollte nun via www.domain.de/sitemap.xml aufrufbar sein.
Nun könnt Ihre die XML Sitemap an Google, Bing usw. senden und einrichten.
Gerne könnt Ihr uns noch neue Beispiele via Kommentare dazu schreiben.
Eure Meinung zu dem Artikel ist gefragt! Schreibt mir ein Kommentar
Ich freue mich auf einen Blick auf meine Amazon-Wunschliste. Vielen Dank!
Jürg Blaser
Danke für diese Lösung.
Wenn man „Nicht im Menu“ – Seiten auch gelistet haben will muss Zeile 70 & 71 so lauten:
excludeDoktypes = 6,7,199,255
includeNotInMenu = 1
Stefanie
Sollen Short-Links nicht mit einbezogen werden, muss die Zeile 102 wieder einkommentiert werden, sonst werden die Unterseiten dieser Verweise nicht in der sitemap.xml aufgeführt – die Verweisseite wird einfach komplett übersprungen.
Wenn z.B. die Hauptnavigation stets Verweis auf die 1. Unterseite ist, ist das ein witziges Feature 😉
Danke aber für das geniale Script!
Thierry
endlich mal eine ideale Lösung, ohne zusätzliche extension
user
Sehr schön!
Vielleicht sollte man den Artikel im Titel ein „xml“ mitgeben, so ist klar worum es geht und auch die Suchmaschinen freuen sich 🙂