Beiträge aus bestimmten Kategorien alphabetisch ordnen-Sitemap auf Texto

[]

Du magst aus einer oder mehreren Kategorien die Beiträge alphabetisch ordnen. Dann sollte dies alles auf einer statischen Seite erscheinen und außerdem sollen die Beiträge unter dem jeweiligen Buchstaben erscheinen.

In einem Kommentar zum Redesign von Texto fragte Thorsten wie denn die derzeitige Sitemap von Texto entstand.

Auf der Sitemap sieht man alle Beiträge von Texto alphabetisch und unter dem jeweiligen Buchstaben geordnet. Nach einem Kommentar von Susanne ergänzte ich sogenannte Sprungmarken -Anker, um das Navigieren zu erleichtern. Ganz unten habe ich noch das Archiv nach Monaten eingefügt. Dies nur, weil vorher auch ein Monatsarchiv zu sehen war und wären jetzt diese Monate nicht mehr verlinkt, würde Texto viele Unterseiten verlieren und dies wollte ich nicht.

Zuerst eine neue statische Seite erstellen.

  1. Texteditor öffnen, eine leere Seite als sitemapnew.php speichern.
  2. Mit nachfolgendem Code befüllen, das für Dein Theme nötige HTML einsetzen oder ersetzen.
  3. Anschließend in den Ordner des jeweiligen Themes laden: wp-content/themes/deintheme/ laden.
  4. Admincenter==>Schreiben==>Seite schreiben==>Titel einfügen==>Rechts nach Template der Seite (oder so ähnlich)suchen, “SitemapNew” auswählen, speichern.

Der neuen statische Seite einen Namen geben.


<?php
/*
Template Name: SitemapNew
*/
?>

Mit dieser Angabe kann WordPress die PHP Datei als WordPress Template identifizieren.

Alphabet anzeigen und darunter die jeweiligen Beiträge aus bestimmten Kategorien.

Folgendes listet die Buchstaben des Alphabets auf. Holt aus den Kategorien mit der ID 1,2,3,5,6,7,8 und 9 die Beiträge. Ordnet sie nach deren Titel und zwar absteigend. Pro Seite sollen alle Artikel angezeigt werden.

<?php for ($zaehler=65;$zaehler<91;$zaehler++) {
    $anfang=chr($zaehler);
echo "<h2>$anfang</h2>"; ?>

<ul class="list">
 <?php
 $posts = query_posts('cat=1,2,3,5,6,7,8,9'. '&orderby=title&order=desc&posts_per_page=-1');
foreach($posts as $post) : 
if (strpos(strtoupper(the_title('','',FALSE)),$anfang)===0) : ?>

    <li class="<?=($i%2)?"farbe01":"farbe02";$i++;?>"><a class="page" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endif; ?>
 <?php endforeach; ?>
 </ul>

<?php }?>

Nur aus einer Kategorie die Beiträge alphabetisch ordnen, geht das auch?

Ja dann ändere die Angabe hier:

query_posts('cat=9'. 

Unterschiedliche Einfärbung der einzelnen Zeilen

Damit diese lange Liste leichter lesbar ist, ist eine unterschiedliche Färbung der Zeilen von Vorteil. Dies macht man ganz einfach, man läßt jeweils bei der Hälfte eine andere CSS class anzeigen. Hier im Beispiel ist dies “farbe01″ und “farbe02″.


    <li class="<?=($i%2)?"farbe01":"farbe02";$i++;?>"><........

Sprungmarken – Anker -zu den einzelnen Buchstaben

Susanne fragte, ob es möglich sei das ewige Scrollen zu verhindern. Sie schlug einen Seitenumbruch vor. Eine Sitemap mit Seitenumbrüchen ist nicht so das wirklich Wahre. Ich habe dies auf einer Domain und muss erkennen, dass die User dies nicht so mögen. Die Seite 2 wird nie angesehen.

Unabhängig, dass dies nicht wirklich einfachst zu realisieren wäre.;)

So kam ich auf die Idee mit Sprungmarken zu den einzelnen Buchstaben und dann den Retourlink “nach oben-Top”.

Dies sieht jetzt dann so aus:


<?php for ($zaehler=65;$zaehler<91;$zaehler++) {
    $anfang=chr($zaehler);
echo "<h3 class='alpha'><a name='$anfang'></a>$anfang</h3>"; ?>

<ul class="list">
 <?php
 $posts = query_posts('cat=1,2,3,5,6,7,8,9'. '&orderby=title&order=desc&posts_per_page=-1');
foreach($posts as $post) : 
if (strpos(strtoupper(the_title('','',FALSE)),$anfang)===0) : ?>

    <li class="<?=($i%2)?"color1":"color2";$i++;?>"><a class="page" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endif; ?>
 <?php endforeach; ?>
<li class="topp"><a href="#topp" title="Nach oben">Nach oben</a></li></ul>

<?php }?>

So setz ich die Anker:

<a name='$anfang'></a>

Und so erzeugte ich die alphabetische Liste oben (hier nur ein Auszug), den Anker für das “nach oben -Top” habe ich in der header.php sowieso immer drin. ;)

<ul class="alphabet">
<li><a href="#A" title="Sprunglink zu allen Beitr&auml;gen mit dem Anfangsbuchstaben 'A'">A</a></li>
<li><a href="#B" title="Sprunglink zu allen Beitr&auml;gen mit dem Anfangsbuchstaben 'B'">B</a></li>
<li><a href="#C" title="Sprunglink zu allen Beitr&auml;gen mit dem Anfangsbuchstaben 'C'">C</a></li>
<li><a href="#D" title="Sprunglink zu allen Beitr&auml;gen mit dem Anfangsbuchstaben 'D'">D</a></li>
.......


Die Anzahl der Kommentare anzeigen und die Zeit

So zeigt man die Zeit an:

<?php the_time('d.m.y') ?>

Die Anzahl der Kommentare müßte man neu aus der Datenbank holen. Ich bin ehrlich und rate ab. Jetzt schon hat die Sitemap auf Texto über 125 Datenbankabfragen, das geht auf über 300 bei der Anzeige der Zeit und was weiß ich wievielen bei der Anzeige der Kommentare!

Die Sitemap lädt und lädt und lädt und dazwischen haben viele Kaffees Platz ;)

Monatsarchiv anzeigen


 <?php wp_get_archives('type=monthly'); ?>


So sieht das Template der neuen statischen Seite für die Sitemap auf texto.de derzeit aus.


<?php get_header(); ?>
<div id="content">

<div class="post">
<h3>Gesamtüberblick aller Beitr&auml;ge auf Texto.de.</h3>
<p>Zuerst alle Beitr&auml;ge alphabetisch geordnet und dann das Archiv nach Monaten.</p>


<?php for ($zaehler=65;$zaehler<91;$zaehler++) {
    $anfang=chr($zaehler);
echo "<h2>$anfang</h2>"; ?>

<ul class="list">
 <?php
 $posts = query_posts('cat=1,2,3,5,6,7,8,9'. '&orderby=title&order=desc&posts_per_page=-1');
foreach($posts as $post) : 
if (strpos(strtoupper(the_title('','',FALSE)),$anfang)===0) : ?>

    <li class="<?=($i%2)?"color1":"color2";$i++;?>"><a class="page" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endif; ?>
 <?php endforeach; ?>
 </ul>

<?php }?>

 
<ul  class="archives"><li><h2>Archiv nach Monaten</h2>
      <ul><?php wp_get_archives('type=monthly'); ?>
			</ul></li></ul>
</div><!--post end-->
</div><!-- content   end-->
<!--index php end-->
<?php get_sidebar(); ?>
<?php get_footer(); ?>


..Bei Fragen, fragen. War es hilfreich, so erzähl es bitte weiter ;)

Ich bin Buch-Autorin, WordPress-Fachfrau, Beraterin für SEO und online Marketing; Lösungen lieb ich genauso wie html5 und css3.
Außerdem bin ich WordPress Enthusiastin, bevorzuge Espresso und gute Schokolade,
Mit WordPress ist fast alles möglich, aber nicht immer sinnvoll. Dies pro Projekt herauszuarbeiten, das ist meine Passion.


28 Gedanken zu “Beiträge aus bestimmten Kategorien alphabetisch ordnen-Sitemap auf Texto”

  1. Hallo Monika,

    was kann man machen, damit die Seite nicht endlos in den Browserboden verschwindet und man sehr viel nach unten scrollen muß?

    Kann man es irgendwie einrichten, dass ein Zeilenumbruch nach einer bestimmten Anzahl erscheint…?

    Könnte man dennoch das Datum des Posts hinzufügen und eventuell in Klammern die Anzahl der Kommentare?

    *duck und wech* :-)

  2. die Sitemap sieht gut aus! :-), aber was machst du wenn du noch viel mehr Artikel hast? Begrenzt du dann die Ausgabe?

  3. Hi Susanne nein wieso..eine Sitemap zeigt eben alles an,
    für den anderen überblick gibt es Kategorien, die Tags oder Keywords und nicht zu vergessen die Suche ;)

    wenn es mal tausend Beiträge sind, dann werde ich mir wieder was überlegen,

    aber für solche Monsterschinken ist das Dragon Sitemap Plugin wohl echt das Beste;)

    die alphabetische Ordnung ist ja doch bloß eine Spielerei :-)

    lg

  4. hi
    ich will die erste page in mein website so gemacht werden.
    -edit von texto-das bild ist nicht mehr verlinkt, daher gelöscht –
    ist das möglich?
    mehr Erklärung :)

    Danke

  5. Hi ja dies ist möglich,
    lies mal
    Kategorien auf der Startseite trennen oder Du suchst Dir hier noch eines der genannten Loop Beispiele raus: Keyword: Loop.
    Der Rest ist dann die Gestaltung per CSS.

    lg

  6. Danke für dieses tolles Plugin. Ich werds bei mir demnächst einbauen. Sowas such ich schon seit längerem. :-D
    Gruß

  7. Hi Lisa
    freu mich für Dich, doch dies nennt man nicht Plugin, es ist einfach eine modifizierte Template
    viel Spaß damit
    lg

  8. Hallo, danke für den Beitrag. Ich würde gern die alphabetische Sortierung in meinen Blogarchiven vornehmen. Ich benutze das Hemingway-Theme und der entsprechende Quellcode sieht wie folgt aus:

    date_format() . ‘.y’ ) ?>
    ” alt=””>

    Ich würde nun gern, dass erkannt wird, ob es sich um Autoren-Archive, Monatsarchive, Kategorienarchive, etc. handelt und nur die dem entsprechenden Beiträge alphabetisch ausgegeben werden. Das klappt aber leider nicht. Kannst Du nicht helfen?

  9. oh, nun hat’s den eingefügten Quellcode zerhauen. Ich hoffe, Du weisst trotzdem, was ich meine?!

  10. Hi Sebastian
    das Hemmingway Theme hat schon jede Menge Abfragen und so weiter drin, daher empfehle ich Dir nutze die sogenannte template Hierarchie von WP.

    Du kannst eine category.php erstellen, kopier die archive.php einfach und mach dann dort was Du magst
    oder erstelle eine eigene author.php
    oder erstelle eine eigene category-13.php die nimmt WP dann nur für die Kategorie mit der ID 13 usw..
    versuch dies mal es ist einfacher, wesentlich einfacher als zig Abfragen und zig Möglichkeiten in einer einzigen Datei

    lg

  11. Hi,
    Das ist ein spitzen Plugin. Habs auch schon erfolgreich installiert. Die Beiträge werden auch alphabetisch nach den Titeln geordnet. Jedoch wäre es für meine Site ) wichtig, dass die Titel unter Ihren Anfangsbuchstaben (wie z.B. A) nochmals von oben nach unten wie in einem Lexikon sortiert werden. Was muss ich am Code ändern, dass das geht?

    Grüsse, Tommy

  12. Hallo Thomas, bis zu drei Buchstaben geht es, weil wie üblich *au**ei* etc oder Abkürzungen anders gehandhabt werden wie auch sonst.

    Mehr als drei Buchstaben zu ordnen, verlangsamt irre..

    order-desc zu asc und es ordnet anders rum..
    lg

  13. Ein genialer Tipp, genau das was wir gesucht haben.
    Für unsere Seite – wir nutzen auch wordpresss als cms -war so eine alphabetische Liste mehr als eine “Spielerei”, sondern unverzichtbar.
    Vielen Dank dafür!

  14. wäre die auflistung auch für kategorien möglich?

    und wenn ja kann mann kategorien dann nur nach buchstabe ausgeben?

    grüße

  15. hi dies geht so

    <?php wp_list_categories('orderby=name');?> 
    

    mit dem Plugin Exec PHP kannst Du dies direkt in eine Seite tippen,
    da würd ich aber in den Code Modus wechseln, wenn Du sonst den TinyMCE nimmst.

    lg

  16. danke für die sehr schnelle hilfe! da hilft mir schon ein stückweit weiter!

    was ich aber eigentlich haben wollte wäre eine alphabetische sortierung nach kategorien, die mann dann nach buchstaben abrufen kann, also angenommen ich habe ein alphabet a-z, dann drücke ich auf “c” und alle kategorien die mit Buchstabe c anfangen werden ausgegeben !

    gibt es da was brauchbares , oder wäre das zu umständlich?

    grüße

  17. Hi hanstest
    ich versteh was Du meinst, ich kenne sowas allerdings nicht,

    bevor sowas programmiert werden sollte, empfehle ich aber zu überlegen, ob dies auch wirklich von zukünftigen,derzeitigen Besuchern/Kunden genutzt wird.

    mir ist es völlig egal in welcher Kategorie was steht, ich mag den Inhalt finden, ich vermut da wäre eine ausgereifte Suchfunktion sinnvoller

    lg

  18. hi, ich denke schon das es genutzt wird, da es die übersichtlich keit doch enorm steigert!

    denn wenn ich meine categorien alle anzeigen würde scroll ich im browser bis nach mexico!

    also der übersichtlichkeit halber wäre es ein traum!

    weiss nur nicht wie ich es realisieren soll, es gibt ein plugin namens wp-snap, das filtert schoen alle posts raus und zeigt diese auch an, bei auswahl des entsprechenden buchstabens.

    evtl kann mann das umprogrammieren auf kategorien..

    Link:

    lg & danke für die hilfe

  19. hanstest ja ..ich geh da früher dran…

    man hat in seiner Wohnung meist auch irgendwo Schubladen – für dies und jenes … tät man aber für jedes kleine Teil eine Schublade haben, tät man auch nichts mehr finden..

    somit würd ich fragen: wozu soviele Kategorien? eventuell vielleicht noch einige Atikel in mehreren Kategorien abgespeichert …

    und genau dann mag ich eine gute Suche ;)
    weils schneller geht und ich such net gern, ich mag finden!

    vielleicht kann Dir wer das Plugin umbauen

    lg

  20. Wow! Ich hatte bisher keine Ahnung, dass ich genau das brauchen könnte. Bin schon am basteln, mal sehen, wie es wird. Danke für den Tipp.

  21. Der Beitrag ist zwar schon recht alt, ich habe aber dennoch eine Frage zu dem Beschriebenen Code, da ich gerade genau nach so einem Post template suche.

    Wie müsste ich diesen Code verändern, wenn ich zu jedem Titel auch noch x Zeichen des Inhalts ausgeben möchte? Also Beitragstitel nach Alphabet sortiert + 30 Zeichen anreisser des Inhalts.

    Vielen Dank schonmal!

  22. Hi
    Du findest in den Code oben den *permalink* in einem *li* am Ende des Permalinks machst einen break mit br / und danach fügst du den template tag the_excerpt ein und schon hast du auch ein wenig Text dabei

    lg

  23. Hi,
    danke für die schnelle Antwort. Aber irgendwie funktioniert das bei mir nicht.

    ich habe versucht und bekomme keine Ausgabe. Auch funktioniert nicht.

    Also entsprechend

    Die andere Sache ist, ich möchte nicht den gesamten excerpt inhalt, sondern nur x Zeichen, z.B. 40 Zeichen.

  24. Oh, da hat wp den php Code gefiltert. Kann ich hier Code eingeben?


    Hab es mit the the_exerpt versucht und mit the_content

  25. versuche

    echo get_the_excerpt
    

    ich bin jetzt ein paar Tage weg , aber ich schau, dass ic hhie und da herkommen und nachschauen kann, obs klappte :-)

  26. Hmm, leider nicht. Vielleicht hast du noch eine Idee? Ansonsten geb ich mich halt nur mit den Headlines zufrieden. Aber ist doch schon eigenartig oder?