Die Liste der Seiten flexibel und individuell formatieren

Hintergrund

Zur automatischen Ausgabe einer Liste der Seiten wird das Template Tag wp_list_pages() verwendet. Die Ausgabe erfolgt in Form einer ungeordneten Liste (<ul>). Die Listenitems (<li>) sind mit der Klassenangabe class="page_item" versehen, die jeweils aktuelle Seite erhält zusätzlich die Klassenangabe class="current_page_item", so dass der aktuelle Seitentitel mit Hilfe von CSS-Angaben anders formatiert werden kann als die restlichen Seitentitel.

Parameter, die die Ausgabe von wp_list_pages() steuern, beeinflussen das Sortierkriterium, die Sortierreihenfolge, die Anzeige von Unterseiten, die Anzeige des Änderungsdatums sowie den Ausschluss einzelner Seiten aus der Liste. Weitere Gestaltungsmöglichkeiten sind nicht vorgesehen.

Vor einiger Zeit wurde hier bereits ein Plugin zur Hervorhebung einzelner Seitentitel in der Liste vorgestellt. Diese Lösung war jedoch etwas umständlich zu handhaben und zudem nicht besonders flexibel 🙂

Das neue Plugin, das ich jetzt vorstellen möchte, erlaubt die individuelle Gestaltung aller Seitentitel in der Seitenliste mit Hilfe von CSS-Angaben.

Funktionsweise

Leider bietet WordPress keine Eingriffsmöglichkeiten (Hooks) in die Erzeugung der Seitenliste. Es existiert lediglich die Möglichkeit die komplette Liste durch einen Filter zu schicken.

(Update: Seit Version 2.8 gibt es in WordPress diese Eingriffsmöglichkeit und das Plugin ist in dieser Form nicht mehr nötig, s. Update).

Das Plugin klinkt sich an dieser Stelle ein, nimmt die komplette Liste und fügt zu jedem Listenitem (Seitentitel) eine individuelle ID-Angabe hinzu. Diese ID-Angabe hat folgende Form:

id="pageid-titel-der-seite"

titel-der-seite entspricht dabei der üblicherweise von WordPress gebildeten Titelform (so, wie der Seitentitel auch im URL-Pfad erscheint, wenn Permalinks aktiviert sind), d.h. Leerzeichen werden durch Bindestriche ersetzt, Satzzeichen und andere Sonderzeichen entfernt.

Nutzung

Nach Installation des Plugins können die einzelnen Seitentitel mit Hilfe von Stylesheet-Angaben beliebig gestaltet werden. Sinnvolle Anwendungsmöglichkeiten sind z.B. Hervorhebungen einzelner Seitentitel oder das Versehen der Seitentitel mit unterschiedlichen Icons:

#pageid-erste-seite {color:red;font-size:130%;}

Der Seitentitel der Seite ‚Erste Seite‘ wird rot und in einer größeren Schrift dargestellt.

#pageid-zweite-seite {list-style-image:url(greendot.gif);}

Der Listeneintrag für die Seite ‚Zweite Seite‘ bekommt einen grünen Punkt als Aufzählungszeichen.

Download

make-page-ids.zip

Installation

Folgende Schritte führen zur erfolgreichen Installation:

1. Kopiere die Datei make-page-ids.php in das Plugin-Verzeichnis wp-content/plugins/
2. Aktiviere das Plugin auf der Plugins-Seite der Admin-Oberfläche.

Update

Seit Version 2.8 gibt es den Hook page_css_class. Damit kann man die Klassen der Seitenlinks komfortabel anpassen und das Plugin wird nicht mehr benötigt. Dazu den folgenden Code in die functions.php des Themes einfügen:

<?php
add_filter('page_css_class', 'custom_page_css_class', 10, 2);
function custom_page_css_class($class, $page) {
  $t = array_merge( $class, array('page-item-'.$page->post_name));
  return $t;
}
?>

Entwicklung

  • Make Page IDs 0.1 — 31. Januar 2007
  • Make Page IDs 0.2 — 10. Februar 2007 — beseitigt einen Fehler im regulären Ausdruck

Das könnte Dich auch interessieren...

6 Antworten

  1. fabs sagt:

    moin,
    kannst du mir sagen, ob man das gleiche auch mit kategorien machen kann? hab probieren die datei umzuschreiben, aber ich kenn mich mit php nicht so aus. wär super, wenn du mir da nen tipp geben könntest.
    viele grüße,
    fabs

  2. Matthias sagt:

    Ja, das geht. Einen ersten Versuch in der Richtung schicke ich mal per Mail, dann kannst du dich als Betatester betätigen 🙂

  3. Michael sagt:

    Genau das was ich gesucht habe, danke!

  4. Markus sagt:

    Hallo,

    ich nutze diese Plugin ab der Version 3.3 funktioniert diese nicht es werden die IDs nicht mehr vergeben,
    wo liegt der Fehler ?

    Gruß

    Markus

  5. Matthias sagt:

    Warum das Plugin nicht mehr funktioniert, habe ich nicht genauer analysiert, denn seit Version 2.8 geht es viel einfacher. Ich habe den Artikel entsprechend ergänzt (s. Update).

  1. 11. Februar 2007

    […] Das zuletzt vorgestellte Plugin hatte einen kleinen hässlichen Fehler […]

Schreibe einen Kommentar

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