How-To Rezensionsindex Part IV:
Automatisierter Index – Nach Buchstaben getrennt

DISCLAIMER: Ich habe keine Ahnung von Webdesign, Programmieren und Co. Alles, was ich habe, ist ein bisschen Übung darin, mit Hilfe von Google und Stackoverflow das zusammen zu basteln, was ich gern auf meiner Website hätte. Vermutlich (sicherlich) geht das in 9 von 10 Fällen einfacher und besser und ich übernehme daher auch absolut keine Garantie für irgendwas von dem, was hier steht!

Und auf ein Neues! Heute, im letzten Teil, der sich mit dem Rezensionsindex selbst beschäftigt, geht es darum, die Ergebnisse von Part III mit dem zu verknüpfen, was in Part I vorgestellt wurde: Der Alphabet-Übersicht. Dafür müsst ihr euren Code, mit dem die Rezensionen abgerufen werden, nach Buchstaben trennen und dann entweder wie in meinem Rezensionsindex auf jeweils eine Seite für jeden Buchstaben aufteilen oder wie in Elenas Rezensionsindex eine entsprechende Liste, in der die Rezensionen unter dem jeweiligen Buchstaben angezeigt werden.

Los geht es mit der einseitigen Variante, bei der alle Rezensionen auf einer Liste zu finden sind. Dafür müsst ihr wieder eure Templatedatei öffnen und den Code finden, der innerhalb der „entry-content“-div-Tags steht:

[php]<div class="entry-content">

<?php the_content(); endwhile; ?>

<?php $my_query = new WP_Query( array( ‚meta_key‘ => ‚buchautor‘,
‚orderby‘ => ‚meta_value‘,
‚order‘ => ‚ASC‘,
‚posts_per_page‘ => -1
) );
while ( $my_query->have_posts() ) : $my_query->the_post(); { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } endwhile; ?>

</div>

<!– .entry-content –>[/php]

Und jetzt könnt ihr als erstes das klickbare Alphabet über der Liste einfügen und dann die dazu gehörigen Anker. Eine genauere Anleitung dazu findet ihr in Part I dieser Reihe. Der Code gehört hinter „the_content“ und eure wp_Query. Wenn ihr da noch weiteren Code zwischen habt, müsst ihr eventuell etwas mit der Platzierung herumexperimentieren, bis der Code auf der Seite da erscheint, wo ihr ihn haben wollt:

[php]<div class="entry-content">

<?php the_content(); endwhile; ?>

<a href="#a">A</a> • <a href="#b">B</a> … <a href="#z">Z</a>

<h4 id="a">A</h4>

<h4 id="b">B</h4>

<h4 id="z">Z</h4>

<?php $my_query = new WP_Query( array( ‚meta_key‘ => ‚buchautor‘,
‚orderby‘ => ‚meta_value‘,
‚order‘ => ‚ASC‘,
‚posts_per_page‘ => -1
) );
while ( $my_query->have_posts() ) : $my_query->the_post(); { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } endwhile; ?>

</div>

<!– .entry-content –>[/php]

Jetzt fehlt nur noch der Code, damit eure Query immer den passenden Buchstaben ausspuckt:

[php]<ul><?php $my_query = new WP_Query( array( ‚meta_key‘ => ‚buchautor‘,
‚orderby‘ => ‚meta_value‘,
‚order‘ => ‚ASC‘,
‚posts_per_page‘ => -1
) );
while ( $my_query->have_posts() ) : $my_query->the_post();
$autor = get_post_meta($post->ID, buchautor, true);
$this_letter = strtoupper(substr($autor,0,1));
if ($this_letter == A) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></ul>
</li>

<?php } endwhile; ?>[/php]

Wenn ihr euch den Code anschaut, werdet ihr feststellen, dass er nur für den Buchstaben „A“ gilt. Zum Glück müsst ihr nicht für jeden Buchstaben den kompletten Code kopieren (auch wenn das hier vorher so stand, aber das kommt davon, wenn man solche Beiträge nicht rechtzeitig fertigstellt und kurz vor knapp noch dran rumbastelt, sorry!) aber ich fürchte, ein bisschen copy&paste steht euch jetzt trotzdem bevor – und das „A“ dann natürlich jeweils zum passenden Buchstaben ändern:

[php]<div class="entry-content">

<?php the_content(); endwhile; ?>

<a href="#a">A</a> • <a href="#b">B</a> • <a href="#c">C</a> … <a href="#z">Z</a>

<h4 id="a">A</h4>

<ul><?php $my_query = new WP_Query( array( ‚meta_key‘ => ‚buchautor‘,
‚orderby‘ => ‚meta_value‘,
‚order‘ => ‚ASC‘,
‚posts_per_page‘ => -1
) );
while ( $my_query->have_posts() ) : $my_query->the_post();
$autor = get_post_meta($post->ID, buchautor, true);
$this_letter = strtoupper(substr($autor,0,1));
if ($this_letter == A) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } ?></ul>

<h4 id="b">B</h4>

<ul><?php if ($this_letter == B) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } ?></ul>

<h4 id="c">C</h4>

<ul><?php if ($this_letter == C) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } ?></ul>

<h4 id="d">D</h4>

<ul><?php if ($this_letter == D) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } ?></ul>

<h4 id="z">Z</h4>

<ul><?php if ($this_letter == Z) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } endwhile; ?>

</div>

<!– .entry-content –>[/php]

Und damit habt ihr euren Rezensionsindex, unterteilt nach Buchstaben, mit klickbarem Alphabet oben drüber! Glückwunsch 😀

Bleibt noch die Variante, bei der ihr für jeden Buchstaben eine eigene Seite habt. Dafür braucht ihr ein neues Seitentemplate und 26 Seiten von A-Z – der Titel darf dabei auch nur der jeweilige Buchstabe sein, ihr könnt die Seiten aber zum Beispiel einer allgemeinen „Rezensionsindex“-Seite unterordnen. Für diese Buchstabenseiten erstellt ihr dann ein Template, das ungefähr so aussieht:

[php]<?php /* Template Name: Rezensionsindex – Einzelne Buchstaben */ ?>

<?php get_header(); ?>

<div id="primary" class="content-area">

<main id="main" class="site-main">

<?php while ( have_posts() ) : the_post(); ?>

<article id="post-<?php the_ID(); ?"> <?php post_class(); ?>>

<div class="entry-total">

<header class="entry-header">
<?php the_title( ‚
<h1 class="entry-title">‘, ‚</h1>

‚ ); ?>
</header>

<!– .entry-header –>
endwhile; ?>

<div class="entry-content">

<a href="deine URL für die Rezensionsindex-Übersicht">Übersicht</a> | <a href="deine URL/a">A</a> | <a href="deine URL/b">B</a> | … | <a href="deine URL/z">Z</a>

<?php $my_query = new WP_Query( array( ‚category_name‘ => ‚rezensionen‘,
‚posts_per_page‘ => -1
) );
while ( $my_query->have_posts() ) : $my_query->the_post();
$autor = get_the_title();
$this_letter = strtoupper(substr($autor,0,1));
if ($this_letter == $buchautor) { ?>

<li><a href="<?php the_permalink(); ?>"><?php $key="buchautor"; echo get_post_meta($post->ID, $key, true); ?>: <?php $key="buchtitel"; echo get_post_meta($post->ID, $key, true); ?></a></li>

<?php } endwhile; ?>

</div>

<!– .entry-content –>

</div>

</article>

<!– #post-<?php the_ID(); ?> –>

</main><!– #main –>

</div>

<!– #primary –>

<?php get_sidebar(); ?>
<?php get_footer(); ?>[/php]

Wie ihr seht, braucht ihr hier nicht jedes Mal den Buchstaben ändern. Ihr müsst dieses Template nur einmal erstellen und es dann eben für jede eure 26 Buchstabenseiten anwenden, anhand des Seitentitels erkennt das Template dann, zu welchem Buchstaben es die passenden Rezensionen anzeigen soll. Denkt nur daran, die Links in der Übersicht auf jeden Fall anzupassen!

Und das war’s! Ich hoffe, ihr kommt mit diesem Tutorial gut zu recht und wünsche euch viel Spaß beim Basteln 🙂 Bei Fragen, Feedback und Problemen, könnt ihr euch gerne jederzeit hier in den Kommentaren oder über Twitter bei mir melden!

How-To Rezensionsindex

5

Zu diesem Post gibt es schon 7 Kommentare - lass doch auch einen da!

  1. Hey 🙂

    Das Litnetzwerk erinnert mich da an etwas, was ich schon die ganze Zeit mal fragen wollte: Wird es eigentlich auch mal einen automatischen Rezi-Index nach Genre geben? Das wäre schon wirklich richtig mega-, megageil ;).

    Liebe Grüße
    Ascari

  2. Moin,

    ich bin über Twitter auf deinen Index und dann auf die Anleitung gestoßen. Ich finde deine Anleitungen sehr gut geschrieben und nachvollziehbar.

    Leider habe ich ein kleines Problem, vielleicht hattest du es bei der Entwicklung auch und kannst mir einen Denkanstoß geben.

    Ich habe zu nächst die klickbare Buchstabensammlung erstellt: funktioniert. Dann die automatische Indexierung. Die ebenfalls funktioniert. Ich habe mich dabei für die Variante mit den benutzerdefinierten Feldern entschieden, damit ich bei den Titel der Artikel nicht so aufpassen muss.

    Nun wollte ich gerne Beides in der einseitigen Variante zusammenführen. Dabei tritt folgender Effekt auf: Habe ich zu Testzwecken nur eine Rezension mit den benutzerdefinierten Feldern versorgt, dann läuft es wie soll. Sobald ich ein oder mehrere weitere Rezension hinzufüge, dann macht der Loop/ die Query für jeden Buchstaben des Alphabetes eine weitere Reihe Buchstaben auf. In der dann in jeder Reihe jeweils nur eine Rezension auftaucht. Die Query scheint also eine Schleife zu drehen, was eigentlich nicht sein sollte.

    Vermutlich sitzt das endwhile irgendwo falsch. In deiner Anleitung, kommen ja nur die ifs jeweils unter die einzelnen Ankerüberschriften und das endwhile ganz ans Ende. Ich habe zwischenzeitlich auch an anderer Stelle versucht.

    Hast du eine Idee? Anschauen kannst du dir den „Schlamassel“ von mir unter: http://blog.hoerske.de/rezensionsindex/

    LG Timo

    1. Hey Timo!

      Freut mich, dass du hergefunden hast! Und sorry, dass es nicht so richtig klappt. Das sollte wirklich nicht so aussehen. Ich werde mir das morgen oder übermorgen mal genauer anschauen und gucken, ob ich dir weiterhelfen kann 🙂

      Liebe Grüße
      Rike

  3. So ich habe jetzt eine Lösung gefunden, viel selberprobieren… ein paar Hilfestellungen aus unterschiedlichen Foren.
    Bei den Überschriften und der if Abfrage muss eine andere Reihenfolge her:

    C
    Ausserdem muss der Buchstabe bei $this_letter in Anführungsstriche. Dann läuft es wie gewünscht…

  4. Nun habe ich nur noch das Problem, wenn ein Buchstabe mehrere Artikel hat, dann gibt es für jeden Artikel ein neues Mal den Buchstaben. Hast du dafür eine Idee? Andere Blogger haben deinen Index ja auch schon übernommen. Ich weiß nicht warum mir nicht so recht gelingen will 🙂

    1. Hey, erstmal sorry, dass ich nicht geantwortet habe, ich bin leider an deiner Rechtsklicksperre gescheitert und habe vergessen, dir Bescheid zu geben. Gleiches Problem gilt immer noch: Ohne zu sehen, was genau du gemacht hast, wird’s schwierig. Ich weiß leider, dass in dem Tutorial ein paar kleinere Fehler stecken, die in einigen Kombinationen für solche Probleme sorgen können, deshalb steht eine komplette Überarbeitung des Tutorials ja auch auf der To-Do-Liste für die Feiertage. Bis dahin … wenn du mir eine Datei mit deinem Code an rike@rikerandom.de schicken würdest, könnte ich nochmal draufschauen 🙂

  5. Du hast Recht, an meine Rechtsklick Sperre habe ich auch nicht gedacht. Irgendwie habe ich es hinbekommen. Noch weiß ich nicht ganz wie 🙂 Aber danke für deine tolle Anleitung und deine Mühe…

    Gruß Timo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Deine E-Mail-Adresse wird nicht veröffentlicht. Mit dem Absenden des Kommentars stimmst du der Speicherung deiner Daten auf rikerandom.de zu. Mehr Informationen finden sich in der Datenschutzerklärung. Erforderliche Felder sind mit * markiert.