Alexander Dick

XJR, Touren, Web-Entwicklung und mehr

Typoscript XML Sitemap

Man kann sich mit Typoscript eine wunderbare XML Sitemap basteln, ohne dazu extra eine der vielen erhältlichen Extensions verwenden zu müssen.

In diesem Beispiel wird der komplette Seitenbaum abgebildet, plus zusätzlich die Einträge einer Extensiontabelle. Wenn man z.B. eine Auflistung von Newsartikeln inkl. einer Detailansicht zum jeweiligen Artikel hat, kann man diese Detailseiten ebenfalls hier hinzufügen. (ab 20 = CONTENT…)

xmlSitemap = PAGE
xmlSitemap {
	typeNum = 200
	config {
		no_cache = 1
		disableAllHeaderCode = 1
		additionalHeaders = Content-Type: text/xml; charset=utf-8
		simulateStaticDocuments = 0
		baseURL = http://www.domain.at/
		absRefPrefix = http://www.domain.at/
		tx_realurl_enable = 1
	}
	10 = COA
	10 {
 
		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 = HMENU
		10 {
			special = directory
 
			#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,5,6,7,199,254,255 
 
			1 = TMENU
			1 {
				expAll = 1
				NO {
					doNotLinkIt = 1
					allWrap = <url>|</url>
					stdWrap.cObject = COA
					stdWrap.cObject {              
 
						10 = TEXT
						10 {
							typolink {
								parameter.field = uid
								returnLast = url
							} 
							wrap = <loc>|</loc>
						}
 
						20 = TEXT
						20 {
							field = SYS_LASTCHANGED
							strftime = %Y-%m-%dT%H:%M:%SZ
							wrap = <lastmod>|</lastmod>
						}
 
						30 = TEXT
						30.value = <priority>0.5</priority>					
 
					}
				} 
			}
			2 < .1
			3 < .1
			4 < .1
			5 < .1
			6 < .1
			7 < .1
			8 < .1
			9 < .1
			10 < .1
		}	   
 
		20 = CONTENT
		20 {
			table = tx_meineextension_entries
			select { 
				orderBy = title ASC
				languageField = sys_language_uid                    
				pidInList = 6,7,8
			}                                                     
 
			renderObj = COA
			renderObj {
 
				stdWrap.wrap = <url>|</url>
 
				5 = TEXT
				5 {                                  
 
					# Seite mit der Detailansicht
					typolink.parameter = 10
 
					typolink.additionalParams = &tx_meineextension_pi1[showUid]={field:uid}
					typolink.additionalParams.insertData = 1
					typolink.returnLast = url 
					wrap = <loc>|</loc>
				}
 
                		10 = TEXT
				10 {
					field = tstamp
					strftime = %Y-%m-%dT%H:%M:%SZ
					wrap = <lastmod>|</lastmod>                
				}
 
				20 = TEXT 
				20.value = <priority>0.4</priority><changefreq>weekly</changefreq>
			}                  
		}            
	}
}

Ich denke das meiste ist selbsterklärend.

Die Ausgabe der Sitemap erhält man dann mittels der festgelegten Typenum. (http://www.domain.at/?type=200)
Mit der passenden realurl Config oder alternativ einer RewriteRule bekommt man das auch noch in schön hin:

//[...]
'fileName'=> array (
		'index'=> array (			
			'sitemap.xml'=> array (
				'keyValues'=> array (
					'type'=>200,
				),
			),
//[...]

(http://www.domain.at/sitemap.xml)

Category: Typo3

Tagged: , , , ,

Leave a Reply