1. Worum geht's hier?

Hier oben seht Ihr eine mit TYPO3 erzeugte Sitemap mit der Einstellung "Abschnittsübersicht (diese Seite)". Diese Sitemap erzeugt pro Inhaltselement auf der Seite MIT gesetzter Überschrift einen Link zu diesem Element. Um diese Liste durchzunummerieren reicht eine Zeile TypoScript:

tt_content.menu.20.3.wrap = <ol class="csc-menu csc-menu-3">|</ol>

2. Die Überschrift der Sitemap nicht mit ins Menü

Da es ein bissl blöde ausschaut, wenn auch die Überschrift der Sitemap im Sitemapmenü selbst auftaucht, müssen wir diese aus dem Menü entfernen. Dafür hat TYPO3 in den Inhaltselementen eine Option auf dem Tab "Zugriff" mit dem Namen "In Menüs zeigen". Hier den Haken raus und unser Menü ist fertig.

3. Das Problem mit den Überschriften

Bis jetzt schaut alles schon ganz gut aus. Das Einzige was noch nervt sind die Überschriften der Inhaltselemente, denn bei diesen fehlt die Durchnummerierung, wie wir sie im Sitemapmenü haben.

Dieser Text hier steht in einem Inhaltselement OHNE Überschrift. Wenn alles funktioniert, darf dieser nicht im Sitemapmenü erscheinen und auch nicht die Durchnummerierung beeinflussen.

4. Eine reine TypoScriptlösung

Im folgenden TypoScript wird die Variable Dank LOAD_REGISTER mit jedem Aufruf um den Wert 1 erhöht aber nur wenn eine Überschrift gesetzt wurde. Mit prioriCalc wird dann der neue sectionIndex berechnet.

Im unteren Abschnitt wird eigentlich nur noch überprüft, ob es sich bei dem aktuellen Contentelement NICHT um das Erste handelt, denn wir wollen vor der Überschrift der Sitemap keine Nummerierung haben. Es soll erst mit dem zweiten Contentelement angefangen werden zu zählen.

5. Das TypoScript

# this must be 1, because of the both RESTORE_REGISTER
lib.stdheader.1 = LOAD_REGISTER
lib.stdheader.1 {
  sectionIndex.cObject = TEXT
  sectionIndex.cObject {
    data = register:sectionIndex
    # calculate only when not the first contentelement
    if.isGreaterThan.data = COBJ:parentRecordNumber
    if.value = 1
    # appent 1 if a header is set
    append = TEXT
    append.if.isTrue.field = header
    append.value = +1
  }
  sectionIndex.prioriCalc = intval
}
lib.stdheader.10.setCurrent.prepend = TEXT
lib.stdheader.10.setCurrent.prepend {
  if.isGreaterThan.data = COBJ:parentRecordNumber
  if.value = 1
  data = register:sectionIndex
  noTrimWrap = ||. |
}