Patrick Fiedorowicz |  14.05.2012 | TYPO3, SEO
Typoscript-Code

In TYPO3 werden standardmäßig vor sämtliche Inhaltselemente Anker-Links platziert, um diese Blöcke direkt verlinken zu können. Diese setzen sich zusammen aus einem a-Tag mit id, bestehend aus einem "c" und der UID des Content Elements, zum Beispiel <a id="c12345"></a>. Verlinkt werden würde auf diesen mit #c12345. Da diese Anker allerdings nicht sehr aussagekräftig sind, generiere ich mit Typoscript sprechende Anker-Links. Die Benutzer wird es freuen, und das ohne zusätzliche Extensions zu installieren.

Ich benutze hierzu die Überschrift des Content Elements als Anker-Link. Da ein Anker allerdings keine Leerzeichen enthalten darf, durchläuft mein sprechender Anker 2 Funktionen des stdWrap, um "verbotene" Zeichen zu entfernen. Das Ergebnis der Anker entspricht in etwa dem von RealURL für sprechende URLs.

Sollten für ein Inhaltselement keine Anker gewünscht sein, muss in den Eigenschaften des Elements nur das Feld sectionIndex (im deutschen Backend: "In Menüs zeigen") deaktiviert werden. Dies ist standardmäßig aktiviert.

Hierzu muss im Setup-Bereich des Templates folgendes Typoscript eingefügt werden: (getestet in TYPO3 4.7)

tt_content.stdWrap {
  # alte prepend-Funktion von CSS Styled Content löschen
  prepend >
  prepend = COA
  prepend.stdWrap {
    # Vor Content-Block einen Anker einfügen
    wrap = < a id="c- | "></a>
    # Anker aber nur setzen, wenn der Content-Block mit Anker umschlossen werden soll 
    if.isTrue.field = sectionIndex
  }
  prepend.10 = TEXT
  prepend.10 {
    field = header
    case = lower
    replacement {
      # Mit Regex alle Leerzeichen durch Bindestriche ersetzen
      10 {
        search = / /
        useRegExp = 1
        replace = -
      }
      # Mit Regex alle unerlaubten Zeichen entfernen 
      20 {
        search = /[^a-zA-Z0-9-]/
        useRegExp = 1
        replace = 
      }
    }
    # Anker aber nur setzen, wenn der Content-Block mit Anker umschlossen werden soll
    if.isTrue.field = sectionIndex
  }
}

Als Ergebnis würde ein Anker-Link, welcher vorher zum Beispiel <a id="c12345"></a> hieß, nun als <a id="news-anzeigen"></a> angezeigt werden. Verlinkt werden kann auf diesen, in dem man #news-anzeigen an eine URL anhängt oder direkt in einem Link angibt.

Man sollte nun allerdings drauf achten, die Überschrift des Content Elements nicht mehr zu ändern, da ansonsten die Anker auch umbenannt werden und alte Anker-Links auf der Seite nicht mehr funktionieren würden.

  1. Joe Joe 19.10.2018
    Gute Idee :-) Irgendwie funktioniert das bei mir noch nicht.
    Vielleicht geht das ja irgendwann mit diesem Feature https://forge.typo3.org/issues/17406 ;-)

Neuen Kommentar schreiben

Deine E-Mail-Adresse wird nicht veröffentlich. Bitte gib Sie an, um dein Gravatar-Bild anzuzeigen.

Zurück zu allen News