TYPO3 – Eine Sitemap mit Typoscript erstellen

Manchmal ist es nötig eine Sitemap ohne das Contentelement Sitemap zu erstellen, sodass die Sitemap auf allen Seiten automatisch eingebunden wird. Ein praktisches Beispiel wäre eine Internetseite, bei der auf jeder Seite eine Sitemap im Footer dargestellt wird.

Mit folgendem Typoscript lässt sich der Seitenbaum bis zu drei Ebenen rekursiv auslesen. Es unterscheidet sich nur in wenigen Punkten von einem normalen Textmenü. Das TMENU (Text Menü) lässt sich selbstverständlich auch als GMENU (Grafisches Menü) darstellen.

Wichtige Befehle in diesem Sitemap – Typoscriptschnipsel sind:

  • entryLevel
  • expAll
  • y <.x

entryLevel

Mit dem entryLevel lässt sich einstellen, ab welcher Ebene der Seitenbaum ausgelesen wird.

expAll

Mit expAll wird eingestellt, dass alle Seiten mit ihren Unterseiten ausgelesen werden.

y < .x

Mit diesem Befehl vererbt man den Inhalt von x nach y. In unserem Typoscriptschnipsel werden die Befehle aus der zweiten Ebene einfach auf die dritte Ebene übertragen. Dies kann beliebig oft für weitere Ebenen fortgeführt werden. (z.B.   4 < .3)

stdWrap.htmlSpecialChars = 1

Mit stdWrap.htmlSpecialChars = 1 werden alle Sonderzeichen z.B. „&“ W3C konform kodiert, sodass es bei einer W3C Validierung zu keinen Warnungen kommen sollte.

Abschließend der komplette Typoscriptcode:

lib.sitemap = COA
lib.sitemap {

	2 = HMENU
	2{
		entryLevel = 0

		1 = TMENU
		1{
		 	expAll = 1
			wrap = <ul class="Ebene1">|</ul>

			NO = 1
			NO {
				wrapItemAndSub = <li class="Ebene1li">|</li>
				stdWrap.htmlSpecialChars = 1
				}

			CUR = 1
			CUR < .NO
			CUR.ATagParams = class=Ebene1CUR

		}

		2 = TMENU
		2{
		 	expAll = 1
			wrap = <ul class="Ebene2">|</ul>

			NO = 1
			NO {
				wrapItemAndSub = <li class="Ebene2li">|</li>
				stdWrap.htmlSpecialChars = 1
				}

			CUR = 1
			CUR < .NO
			CUR.ATagParams = class=Ebene2CUR

		}

		3 < .2

	}
}
  • Diesen Beitrag weiterempfehlen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Lösen Sie bitte die Rechenaufgabe. *