Pimp-My-WordPress a.k.a. das Table-of-Content-Plugin

Inhaltsverzeichnis

 

1. Vorwort Inhalt

HEUREKA! Wie lange schon geht mir auf die Nerven, dass WordPress keine Inhaltsverzeichnisse unterstützt. Die Suche nach „table of content“ in der Plugin-Seite fördert nur wenig zu Tage, ganz selten ist eines der gefundenen Plugins überhaupt mit WP 3+ kompatibel, gefallen hat mir keines. Ziel ist doch nur, aus den Überschriften der verschiedenen Level eines Artikels ein popeliges Inhaltsverzeichnis zu erzeugen.

Nun ja, nachdem dem Inschenör nichts zu schwör ist, wird ab heute selbst Hand angelegt. Die Grundlage bildete das noch am ehesten brauchbare Plugin „TinyTOC„, welches aber auch eigene Tags erwartet, um Überschriften zu erkennen.

Nachdem ich gerne die Qualitätsmarke „made-in-Germany“ auf eigene Entwicklungen stempele, ist’s nicht genug, ein Inhaltsverzeichnis zu erzeugen, sondern auch mit einer uralten HTML-Schwäche zu brechen – den Kapitelnummern. Warum können verschachtelte Heading-Tags nicht entsprechend (1., 1.1., 1.1.2, etc.) ausgegeben werden?! Es ist selbst mit CSS nicht möglich, entsprechende Funktionalität zu implementieren.

Zeit wird’s für ein Redesign.

2. Beschreibung Inhalt

Das Plugin kann im Wesentlichen die folgenden zwei Aufgaben übernehmen.

2.1 Erweiterung von Überschriften um Kapitelnummern Inhalt

Das Plugin scannt den gesamten Text eines Posts, egal ob in Seite aufgeteilt („paginated“) oder nicht, und extrahiert die Überschriften aus den h1h6 HTML-Tags. Sofern der Autor die Verschachtelung korrekt durchgeführt hat, sprich alle Ebenen sind aufsteigend hintereinander angeordnet (1. -> 1.1. -> 1.1.1., nicht 1. -> 1.1.1.), erstellt das Plugin korrekte intern Einträge.

Aus diesen erzeugt es quasi-eindeutige, zumindest aber statische ID-Attribute und weist sie den jeweiligen h*-Tags auf der aktuellen Seite („Page“) zu. Dies geschieht unabhängig von den Gliederungsebenen, jede Überschrift erhält eine eigene ID.

Danach werden optional aus den Einstellungen im Admin-Interface und den jeweiligen Gliederungsebenen Kapitelnummern erzeugt (z.B. I., I.1, I.2, II., II.1., etc.) und diese dem Text der Überschrift vorangestellt.

Es lassen sich dafür drei Dinge einstellen:

  1. Die Tiefe der Nummerierung von Level 1 – Level 9.
  2. Der Nummernstil der Ebene:
    • nicht nummerieren
    • Arabische Ziffern: 1, 2, 3, …
    • Römisch Klein: i, ii, iii, iv, …
    • Römisch Groß: I, II, III, IV, …
    • Alphabetisch Klein: a, b, c, …
    • Alphabetisch Groß: A, B, C, …
  3. Ein abschließendes Zeichen der Ebene:
    • keines
    • immer den Punkt (1., 2.)
    • Punkt, wenn nicht letzte Ebene (1, 1.1, 1.1.1, etc.)
    • immer Klammer (1),2),3))
    • Klammer, wenn nicht letzte Ebene (1, 1)1, 1)1)1, etc.)

Das sollte eine maximale Flexibilität für die meisten Einsatzzwecke geben.

2.2 Erzeugen des Inhaltsverzeichnisses Inhalt

Wenn gewünscht, erzeugt das Plugin auch ein Inhaltsverzeichnis. Nahezu unabhängig von der Nummerierung von oben können auch hier ein paar Einstellungen vorgenommen werden:

  • Kapiteltiefe: Bis zu welchem Level soll der TOC aufgebaut werden.
  • Soll es eine flache Liste werden, eine aus <ul>-Elementen erzeugte, oder sollen die Kapitelnummern von oben übernommen werden (dann ist TOC-Tiefe auf die Nummerierungstiefe von oben begrenzt!).

Da die <ul>-Tags und die Nummerierungselemente flach untereinander liegen und nicht verschachtelt sind, erhalten die einzelnen Ebenen jeweils eine oder mehrere CSS-Klassen:

  • tinytoc_level_n: Selbsterklärend, in welchem Level befindet das <li>– oder <div>-Element.
  • current_page: Ist das Ziel des Links auf der aktuellen Seite zu finden?
  • fiurst_in_block: Wenn ein neuer Level-Block aufgemacht wird (z.B. von 1. -> 1.1.), erhält das erste Element im neuen Block diese Klasse.
  • last_in_block: Wenn Level-Block beendet wird (z.B. von 1.1. -> 2.), erhält das letzte Element im Block diese Klasse.

Damit kann das Verzeichnis beliebig gestyled und angeordnet werden.

3. Fazit Inhalt

Das Stück Software ist weit davon entfernt, sauber oder schön programmiert zu sein, oder fertig. Ich habe im Moment nur leider gar keine Zeit zum weiterentwickeln und habe nur einen 2 Tage-Hack gesucht, um eben den Blog etwas zu verbessern. Hier der TinyTOC-Extended-Quellcode, soweit es geht kommentiert (Hinweis: Ich übernehme keine Haftung für oder gebe Garantien irgendwelcher Art auf die Software; Verwendung erfolgt auf eigenes Risiko!). Zum Installieren einfach in das /plugins-Verzeichnis kopieren, im Admin-Interface bei Plugins aktivieren und -wichtig- mindestens einmal die Konfiguration speichern.

Bislang keine Kommentare vorhanden.

Einen Kommentar hinterlassen