XML Sitemap mit TypoScript

Eine XML Sitemap ist die beste Möglichkeit den strukturellen Stand einer Website einer Suchmaschine mitzuteilen. Für TYPO3 gibt es einige Extensions, die das ermöglichen. Allerdings ist TypoScript mächtig genug, eine Sitemap nicht nur mit statischen aber auch mit dynamischen Inhalten sprich Plugins zu realiseren.

Folgendes TypoScript listet alle statischen Seite per HMENU auf und führt beispielhaft die Datensätze für die News-Extension auf. Analog dazu können auch andere Datensätze in die Sitemap aufgenommen werden. Die Reihenfolge Seiten in der XML Struktur ist nicht wichtig, deshalb können die News-Einträge auch am Ende anknüpfen.

 

xmlSitemap = PAGE
xmlSitemap {
typeNum = 200
config {
xhtml_cleaning = none
no_cache = 1
disableAllHeaderCode = 1
additionalHeaders = Content-Type: text/xml; charset=utf-8
simulateStaticDocuments = 0
tx_realurl_enable = 1
}
wrap (
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd
">|</urlset>
)

10 = COA
10 {
10 = HMENU
10 {
special = list

# Ausgangspunkt / Root Seite
special.value = 1

# 1 = Standard
# 2 = Erweitert
# 3 = Externe URL
# 4 = Shortcut
# 5 = Nicht im MenÌ
# 6 = Backend Benutzer Bereich
# 7 = Mount Seite
# 199 = Abstand
# 254 = Sysordner
# 255 = Recycler

excludeDoktypes = 2,3,4,5,6,7,199,254,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.value = <priority>1.0</priority>
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
}

# News-Extension
20 = CONTENT
20 {
table = tx_news_domain_model_news
select {
orderBy = title ASC
languageField = sys_language_uid
# Sysordner mit tx_news Datensätzen
pidInList = 20
}
renderObj = COA
renderObj {
stdWrap.wrap = <url>|</url>
5 = TEXT
5 {
# News-Detailseite
typolink.parameter = 25
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>
}
10 = TEXT
10 {
field = tstamp
strftime = %Y-%m-%dT%H:%M:%SZ
wrap = <lastmod>|</lastmod>
}
20 = TEXT
20.value = <priority>0.7</priority><changefreq>weekly</changefreq>
}
}
}

 

Die Ausgabe erhält man über den Aufruf des type-Parameters in der URL (http://domain.de/?type=200). Es empfiehlt sich jedoch die Sitemap über einen sprechenden Namen aufrufbar zu machen (http://domain.de/sitemap.xml), da Suchmaschinen und andere Dienste dort automatisch danach schauen. Hierzu sollte die RealURL Konfiguration auf manuell geschaltet und folgendes in der realurl_conf.php eingetragen werden:

 

// […]
'fileName' => array (
'defaultToHTMLsuffixOnPrev' => 0,
'acceptHTMLsuffix' => 1,
'index' => array(
'sitemap.xml' => array(
'keyValues' => array (
'type' => 200,
),
),
),
),
// […]

 

Dieses TypoScript basiert auf einem älteren Post von Alexander Dick, dass optimiert und für die News-Extensions angepasst wurde.

Sheydin Studio gestaltet Interaktionsabläufe, verwandelt Daten in Information und entwirft einzigartige Erscheinungsbilder … mehr

Top