Alphabetische Übersicht der Beiträge oder Seiten ausgeben

Möchte man ein Glossar in seine WordPress-Site integrieren, WordPress als Lexikon missbrauchen oder einfach ein alphabetisches Verzeichnis anbieten, so kann das folgende Plugin verwendet werden:

Das Plugin Alpha List gibt eine alphabetisch sortierte Liste der Beiträge einer oder mehrerer Kategorien aus. Es ist auch möglich, eine alphabetisch sortierte Liste der Seiten erstellen zu lassen, wobei eine oder mehrere Seiten ausgeschlossen werden können.

Und so funktioniert das Plugin:

Download

alpha-list04.zip

Installieren

Folgende Schritte führen zur erfolgreichen Installation:

  1. Kopiere die Datei alpha-list.php in das Plugin-Verzeichnis wp-content/plugins/
  2. Aktiviere Alpha List auf der Plugins-Seite der Admin-Oberfläche.

Benutzen

Die Ausgabe der Liste erfolgt am besten in einem eigenen Seitentemplate. An der Stelle, an der die Liste ausgegeben werden soll, muss die Funktion alpha_postlist() (für Beiträge) bzw. alpha_pagelist() (für Seiten) aufgerufen werden.

Für eine Liste der Beiträge:

<?php 
if ( function_exists ('alpha_postlist')) { 
  alpha_postlist(); 
} ?>

Für eine Liste der Seiten:

<!--?php 
if ( function_exists ('alpha_pagelist')) { 
  alpha_pagelist(); 
} ?-->

Die Funktion alpha_postlist() hat zwei Parameter. Mit dem ersten kann angegeben werden, dass nur Einträge ausgewählter Kategorien ausgegeben werden können. Mehrere Kategorien müssen dabei durch ein Komma voneinander getrennt werden.

Beispiel: Alphabetische Liste aller Beiträge der Kategorie 2:

if ( function_exists ('alpha_postlist')) { 
  alpha_postlist('2'); 
}

Beispiel: Alphabetische Liste aller Beiträge der Kategorien 2 und 3:

if ( function_exists ('alpha_postlist')) {
  alpha_postlist('2,3'); 
}

Wird dieser Parameter nicht angegeben, werden standardmäßig alle Beiträge ausgegeben.

Der zweite Parameter $show_empty bestimmt, ob auch Anfangsbuchstaben ausgegeben werden sollen, zu denen kein Beitrag existiert. Standardmäßig ist dies nicht der Fall.

Beispiel: Alphabetische Liste aller Beiträge der Kategorie 2, Ausgabe aller Anfangsbuchstaben:

<!--?php 
if ( function_exists ('alpha_postlist')) {
  alpha_postlist('2',1); 
} ?-->

Ausgegeben werden in dieser kompletten Liste Ziffern von 1 bis 0 und Buchstaben von A bis Z.

Die Funktion alpha_pagelist() hat ebenfalls zwei Parameter. Der zweite funktioniert analog zu oben. Mit dem ersten können Seiten angegeben werden, die nicht in der Liste enthalten sein sollen. Mehrere Seiten müssen dabei durch ein Komma voneinander getrennt werden.

Beispiel: Alphabetische Liste der Seiten, Ausschluss der Seiten mit den IDs 4 und 8:

if ( function_exists ('alpha_pagelist')) {
  alpha_pagelist('4,8'); 
}

Noch ein wichtiger Hinweis: die alphabetische Sortierung nutzt die Titelform, die auch bei den Permalinks verwendet wird. Wenn man nicht ein Plugin wie o42-clean-umlauts benutzt, dass die Behandlung von Umlauten in Titeln anpasst, wird Ä beim Einsortieren wie A behandelt.

Anpassen

Das Aussehen der Liste kann mit Hilfe von CSS angepasst werden.

  • Die ausgegebene Liste (<ul>) ist mit der CSS-Klasse .abc-list versehen.
  • Die einzelnen Anfangsbuchstaben sind als Überschriften <h3> gekennzeichnet.
  • Unterhalb der Überschriften findet sich jeweils eine Liste (<ul>) mit den einzelnen Beiträgen.
  • Die Listenitems haben abwechselnd die Klasse .abc-odd und .abc-even.

Beispiel:

.abc-list {list-style-type:none;}

sorgt z.B. dafür, dass die Überschriften keine Aufzählungszeichen haben.

Beispiel:

.abc-odd {background:#ccc;}
.abc-even {background:#eee;}

gibt den Einträgen wechselnde Hintergründe. Das sieht dann so aus:

Beispielausgabe einer alphabetischen Liste

Die Aufteilung in mehrere Teillisten ist seit Version 0.2 möglich.

Entwicklung

  • Alpha List 0.4 — 9. Februar 2009
    • Eigene Query für die alphabetischen Listen, so dass die ursprüngliche Abfrage erhalten bleibt (wichtig z.B. für Funktionen wie is_page())
  • Alpha List 0.3 — 12. August 2008
    • Korrektur des Loops 🙂
    • Auslagerung der Ausgabe eines Eintrags in die Funktion entryout(), so dass die Ausgabe leichter angepasst werden kann
  • Alpha List 0.2 — 29. Januar 2008
    • Mit Hilfe der zwei neuen Parameter $start und $ende kann die Liste auf einen Teilbereich (z.B. Buchstaben A-G) beschränkt werden.
  • Alpha List 0.1 — 15. Januar 2008
    • Erste Version

Das könnte Dich auch interessieren...

42 Antworten

  1. Matthias sagt:

    Gerade gesehen: Ein anderer Lösungsansatz für das Problem findet sich bei gunnart.

    Noch ein verwandtes Plugin: wp-snap.

  2. geiser sagt:

    Hallo, ich benutze Ihre Auflistung, welche ich über google gefunden habe. Ein super plugin, welches ich nur empfehlen kann. habe jedoch ein problem, und weiss nicht weiter. ich möchte gerne noch 2,3 Sachen abändern. Was genau muss ich tun:

    Ich würde gerne das ganze was nun verschoben ist an den linken Rand bringen. und ebenfalls ohne punkt davor. die Auflistung der einzelnen Buchstaben (bsp. T) muss auch nicht zwingend sein. Was kann ich tun? und wo?

  3. Matthias sagt:
    .abc-list, .abc-list ul { 
      list-style-type:none;margin:0;padding:0;
    }

    aber die falschen Kommata am Ende der beiden Zeilen davor (.mininews … und .newscol …) müssen weg, sonst klappt’s nicht 🙂

  4. geiser sagt:

    Danke für die Tipps, hat funktioniert. Aber eines Frage ich mich noch. Warum zeigt es mir in der Auflistung ab dem zweiten Buchstaben -> Siehe: http://www.simplycooking.ch/rezepte/ zuvor doch noch eine Aufzählungsgrafik rein? Wie entferne ich diese wie beim ersten Aufzählungspunkt.

  5. Matthias sagt:

    Das ist die Hintergrundgrafik der Überschrift h3

    Wenn schon, dann müssen im Plugin-Quelltext alle h3 in h6 umgewandelt werden. Über .abc-list h3 könnte man die h3s alternativ auch per CSS umformatieren.

  6. Andreas A. sagt:

    Hallo,

    das Plugin zeigt nach der alphabetisch sortierten Liste auch noch alle Beiträge der ausgewählten Kategorie im Volltext an.
    http://www.filmtapete.de/videos/

    Kann man das verhindern, sodass nur die alphabetische Liste dargestellt wird?

  7. Matthias sagt:

    Ja, das kann man verhindern, indem man die Beiträge nicht anzeigen lässt 🙂

    Also im Kategorietemplate (je nach Theme z.B. category.php oder archive.php) den Loop weglässt. Das ist die Schleife, in der die Beiträge im Volltext angezeigt werden, eingeleitet mit while (have_posts()). Hat also mit dem Plugin direkt nichts zu tun.

  8. Andreas A. sagt:

    Ah, mein Fehler war, dass ich den Code zum Aufrufen des Plugins einfach auf die statische Seite kopiert habe. Jetzt verwende ich ein Template und es funktioniert.

    Vielen Dank für die schnelle Hilfe!

  9. jan sagt:

    hallo mathias,
    ich hatte damals im wordpress forum nachgefragt und probiere seit dem mit deinem script rum. gefällt mir gut und ist auch sehr universell einsetzbar. an einer sache scheitere ich aber seitdem und bin mir nicht mal sicher, ob es momentan möglich ist.

    ich würde gerne als endergebnis eine art tabelle haben (sprich bsp. a-j in spalte 1 j-s in spalte 2 und s-z in spalte 3. vllt. kannst du mich ja auf den rechten weg führen. danke 😀

  10. Matthias sagt:

    Das scheint mir im Moment ohne Änderungen am Plugin nicht möglich.

    Man könnte dem Plugin noch weitere Parameter anfang und ende mitgeben, um dann drei Listen ausgeben zu lassen, die man mit float:left; nebeneinander positioniert.

    Vielleicht in einer zukünftigen Version 🙂

    Mit dem Firefox kann man jetzt schon CSS3 nutzen und der Liste die CSS-Anweisung

    .abc-list {-moz-column-count: 3;}

    verpassen.

  11. kruisko sagt:

    Hallo Matthias,

    dein plugin scheint genau die richtige lösung für mich zu sein.
    ich möchte in der sidebar links zu songtexten alphabetisch auflisten.
    wenn ich es richtig verstanden habe, macht Alpha List genau das.

    die texte sind als pages organisiert und ich benutze das plugin Page Category Organiser.
    gibt es ne möglichkeit vor dem ausführen des plugins eine abfrage zu machen, daß nur pages einer bestimmten category (SongTexte) aufgelistet werden?
    Alle nicht-text-seiten manuell auszuschließen erscheint mir etwas mühsam…

    ich bin leider immer noch php-anfänger…

  12. Matthias sagt:

    Möglich ist sicher (fast) alles. Hier fehlt mir leider im Moment die Zeit, mich in dieses Plugin, das ich nicht kenne, zu vertiefen.

  13. Matthias sagt:

    Es gibt das in Kommentar 10 versprochene Update 🙂

  14. Michael sagt:

    Hallo,

    danke für das geniale Plugin. Ich würde mir eine Möglichkeit wünschen bei den Posts einzelne Kategorien auszuschließen.

  15. Matthias sagt:
    <php 
    if ( function_exists ('alpha_postlist')) { 
       alpha_postlist(-2); 
    } ?>

    Schon mal ausprobiert?

  16. Michael sagt:

    Hallo Matthias, vielen Dank für die Info.

    Noch eine kurze Frage: Da ich viele Autoren habe, würde ich diese auch gerne mittels Alpha List ausgeben wollen. Vielleicht kann man das Plugin ja dahingehend erweitern.

  17. Matthias sagt:

    Danke für die Anregung. Mal gucken, was sich machen lässt… 🙂

  18. Lefdi sagt:

    Hallo Matthias,
    ich möchte dein Plugin für ein Lexikon nutzen.
    Habe es auf einem Testblog laufen.
    Es ist nur so, dass die Überschrift „Radlexikon“ links ausserhalb meines Templates liegt.
    Die Auflistung habe ich via CSS schon nach rechts gerückt.
    Kann es sein, dass ich vielleicht im extra angelegten Template was vergessen habe….?

    Lefdi

  19. Matthias sagt:

    Ohne das „live“ zu sehen, kann man nicht viel dazu sagen…

  20. Lefdi sagt:

    Hallo Matthias,

    Problem hat sich erledigt.
    Ich hatte eine vorhanden PHP Datei genommen und da waren wohl ein paar Parameter falsch.
    Habe dann eine funktionierende PHP Datei genommen und diese entsprechend umgebaut.
    Jetzt klappt es prima.

    Geniales Plugin.

    Lefdi

  21. Matthias sagt:

    Danke 🙂 Dann bin ich ja beruhigt. Ich konnte mir auch nicht vorstellen, dass das Problem etwas mit dem Plugin zu tun hatte 🙂

  22. Oliver sagt:

    Hallo Matthias,
    genau wie für Michael wäre es auch für mich interessant wenn man die Autoren mit ausgeben könnte und bei der Gelegenheit vielleicht auch noch das Datum wann der Bericht erschienen ist..
    Danke für das Klasse PlugIn, ich finde es Klasse!!!

    BG Olli

  23. Matthias sagt:

    Wenn ich das richtig verstanden habe, möchte Michael eine alphabetische Liste aller Autoren, du möchtest dagegen die Titelliste durch Autoren und Datum ergänzen. Ersteres ist in Vorbereitung, zweiteres auch relativ einfach machbar: Alle Stellen, an denen der Titel ausgegeben wird, entsprechend ergänzen:

    <?php the_title(); ?></a></li>

    wird zu

    <?php the_title(); ?></a> <?php the_author(); ?> 
    <?php the_time('j.n.Y'); ?></li>
  24. Hallo,
    im Grunde klappt es, aber der Author wird nicht ausgegeben..
    die Funktion the_author ()gibt nicht den Namen aus, sondern leider gar nichts..
    Woran könnte das liegen??
    BG Olli

  25. Matthias sagt:

    Systemfehler meinerseits, ich habe jetzt in der neuen Version 0.3 den Loop korrekt verwendet und dann klappt es auch mit dem Autor 🙂

    Außerdem habe ich die Ausgabe in die Funktion entryout() ausgelagert, so dass die Ausgabe nur an einer Stelle angepasst werden muss.

    Download

  26. sehr schön, so klappt es auch mit dem Nachbarn 😉
    Vielen Dank für Deine Hilfe!!!
    Gruß
    Olli

  27. Michael sagt:

    Oh, super. Dann warte ich mal geduldig ab 😉

  28. Ernst sagt:

    Hallo,

    eine Frage: Ist es auch möglich, das Plugin so anzupassen, dass NUR die Registereinträge für die einzelnen Beiträge alphabtisch aufgelistet werden, aber darunter NICHT die einzelnen Beiträge selbst? Das wäre toll!

    Vielen Dank schon mal & Grüße
    Ernst

  29. Matthias sagt:

    Ich bin mir nicht sicher, ob ich das richtig verstehe 🙂

    Im Moment wird eine Liste der Beitragstitel mit Link zum Beitrag ausgegeben, nicht die Beiträge selbst.

  30. Ernst sagt:

    Hallo Matthias,

    also ich hatte das Plugin getestet, indem ich auf einer „normalen“ Seite in WP das folgende Schnipsel erfasst hatte:

    Daraufhin bekam ich
    1. die Registereinträge und darunter (auf der gleichen Seite)
    2. die vollständigen Beiträge angezeigt.

    Vielleicht hab ich ja auch irgendwas falsch gemacht?

    Vielen Dank schon mal und Grüße
    Ernst

    erfadsstg

  31. Matthias sagt:

    Ach so… 🙂 Die Ausgabe erfolgt am besten in einem eigenen Seitentemplate. Der so genannte „Loop“, also die Stelle, an der die Beiträge normalerweise ausgegeben werden, sollte dort natürlich nicht mit enthalten sein. Der übernimmt sonst nämlich die Ergebnisse der Abfrage (die mit query_posts gemacht wird) und gibt diese nochmal im normalen Format aus.

  32. Lefdi sagt:

    Hallo Matthias,

    ist es möglich die Auflistung 2-spaltig zu gestalten..?
    Also Spalte 1 von A – H und Spalte 2 von I – Z….??

    Ich hab zwar per CSS schon 2 Spalten deklariert, aber irgendwie müsste ich dem Plugin nun sagen wo der Break kommt.

    Grüße

    Lefdi

  33. Matthias sagt:

    Hallo, schon mal ins Update geschaut? 🙂

  34. Lefdi sagt:

    Hi Matthias,

    uuppss…sorry…wer lesen kann ist besser dran.

    Trotzdem danke für das schnelle Feedback

    Lefdi

  35. Ingo sagt:

    Hallo,

    ist es möglich Einträge, die mit Zahlen beginnen unter einer hirarchie 0-9 zusammen zu fassen? Würde bei mir schöner aussehen.

    Vielen Dank, sonst ein klasse Script!

    Gruß,
    Ingo

  36. Matthias sagt:

    In der aktuellen Version leider (noch) nicht.

  37. Lefdi sagt:

    Hallo Matthias,

    hab mal wieder ein kleines Problem.
    Auf meiner Seite benutze ich ja wie bereits erwähnt dein geniales Plugin.
    Dieses wird derzeit insgesamt 3x verwendet.
    Zum einen beim Lexikon, bei den Radtypen und nun auch bei den Radherstellern.
    Nun will ich bei den Radherstellern die TAGS noch unter dem Herstellernamen anzeigen lassen.
    Mir wurde im WP-Forum diesbezüglich auch schon geholfen und zwar mit der folgenden Funktion:

    function entryout() {
      ...
      if (is_page('Radhersteller')) {
        ...
    }

    Eigentlich sollte das php if bewirken, dass nur die Seite „Radhersteller“ mit der Funktion der TAGS beachtet werden soll.
    Leider ist es aber so, dass bei allen drei Rubriken nun die TAGS aufgelistet werden.

    Ist da der PHP-Code falsch, oder geht das so grundsätzlich gar nicht.

    Muss ich eventuell das Plugin 2x installieren….???

    Grüße

    Lefdi

  38. Matthias sagt:

    Das lag daran, dass per query_posts() die ursprüngliche Query überschrieben wurde. Damit ist die Abfrage is_page() immer falsch. Die neue Version 0.4 korrigiert das.

  39. Simon sagt:

    Hallo, ich weiß, dass hier schon seit 6 Jahren nichts mehr geschrieben wurde, jedoch benutze ich das Plugin und habe dazu eine Frage. Ich möchte es auf eine Multisite anwenden. In den verschiedenen Seiten sollen zwar die gleichen Kategorien bestehen, jedoch bleiben die IDs der Kategorien nicht die gleichen, da WordPress immer andere vergibt.
    Gibt es die Möglichkeit, dass man statt der ID den Permalink bzw Slug der Kategorie anspricht, sprich statt

    <?php
    if ( function_exists ('alpha_postlist')) {
      alpha_postlist('2');
    } ?>

    eine Variante wie z.B.:

    <?php
    if ( function_exists ('alpha_postlist')) {
      alpha_postlist('kategorietitel');
    } ?>

    Für ein bisschen Hilfe wäre ich sehr dankbar! Beste Grüße, Simon

  40. Matthias sagt:

    Schön, dass das Plugin immer noch nützlich ist 🙂

    In Zeile 158 müsste man

      $alpha_query = new WP_Query('cat='.$cat.'&orderby=title&order=asc&posts_per_page=-1');

    durch

      $alpha_query = new WP_Query('category_name='.$cat.'&orderby=title&order=asc&posts_per_page=-1');

    ersetzen.

    Dann werden die Kategorie-Slugs genutzt (aber dann auch nur noch die), S. Dokumentation.

  41. Cornelia Weidenauer sagt:

    Hallo Matthias!
    Ich habe auch eine Frage zu deinem tollen Plugin, ich habe es hier benutzt: http://c2e.a6e.myftpupload.com/rezeptindex/ und jetzt habe ich von einem Rezept den Namen geändert auf „Gesundes Nutella“, jetzt spuckt er mir oben aber wieder ein G aus und hat den Beitrag unten beim G rausgenommen, weißt du woran das liegen könnte? Ganz liebe Grüße

  42. Matthias sagt:

    Hallo,

    ich sehe das Problem nicht. Der Beitrag ist doch richtig eingeordnet?

Schreibe einen Kommentar

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