Tags und Kategorien für Posts

von Oliver Holz, Juli 21st, 2008 | No Comments

Das hier verwendete Braille-Theme hat einige Besonderheiten. So gibt es weder in der Einzel- und der Archivansicht, noch auf der Startseite eine Anzeige für Tags und Kategorien:

Tags und Kategorien

Diese sind mir persönlich aber wichtig. Also müssen sie eingefügt werden. Für die Einzelseiten ist das absolut kein Problem. Einfach folgende Code in die single.php einfügen:


<?php the_content(); ?>
<p class=”post-tags”><?php if (function_exists(’the_tags’)) the_tags(’Tags: ‘, ‘, ‘, ‘<br/>); ?></p>
<p class=”post-cats”>Kategorien: <?php the_category(’ ‘); ?></p><br/>
<div id=”comments”>

Leider gibt es bei diesem Template weder für die Suchergebnisse noch die Archivseite eine eigene .php-Datei. Alle diese Funktionen werden in der index.php realisiert. Kategorien und Tags sollen allerdings nur auf der Startseite und den Archivseiten angezeigt werden. Bei der Suche kann es passieren, dass Seiten und Artikel gleichzeitig angezeigt werden. Beim Suchergebnis würden Kategorien und Tags auch für die Seiten angezeigt werden. Das macht jedoch wenig Sinn. Also müssen wir Wordpress hier sagen, dass es Tags und Kategorien nur auf den gewünschten Seiten anzeigt. Dazu kommt folgender Code in die index.php:


<?php if (is_home()) the_tags(’<p class=”post-tags”>Tags: ‘, ‘, ‘, ‘</p><p class=”post-cats”>Kategorien: ‘) & the_category(’ ‘); ?></p>
<?php if (is_archive()) the_tags(’<p class=”post-tags”>Tags: ‘, ‘, ‘, ‘</p><p class=”post-cats”>Kategorien: ‘) & the_category(’ ‘); ?></p>
<?php if (is_search()) echo “<br/>” ; ?>

Hier hätten wir auch schon das nächste Problem. Wie man sieht, kann die Konditionalfunktion the_category keine Argumente aufnehmen. Also muss man ein wenig Schummeln und diese etwas werkwürdige und nicht ganz korrekt Form wählen. Damit bei einer Suche nicht zwei ungeöffnete “p”-Tags geschlossen werden, muss die Konditionalfunktion is_search her. Allerdings funktioniert das ganze System nur dann, wenn alle Artikel getaggt sind. Ansonsten steht unter dem Post nur die Kategorie ohne Formatierung.
Die Bilder vor den einzelnen Zeilen sind als background in der .css-Datei implementiert und mit ein wenig Geschick positioniert. Die Abgrenzung erfolgt per border-top und border-bottom.

Kategorien: Wordpress

Schöne Sidebar dank kleiner Änderung

von Oliver Holz, Juli 20th, 2008 | No Comments

Sidebar vorherWie angekündigt bastele ich fleissig am Aussehen des Blogs. Erste Übung heute war, die Sidebar übersichtlicher zu gestalten. Bei der doch relativ hohen Zahl an Seiten und vor allem Unterseiten, musste eine andere Lösung her. Das Standardlayout war mir einfach zu ausgedehnt.
Abhilfe schafft da schon einmal die Abänderung der Anzeigetiefe der Seiten:

<?php wp_list_pages(’sort_column=menu_order&title_li=&depth=1′); ?>

“depth=1″ bewirkt, dass nur die Seiten in der ersten Ebene angezeigt werden. Leider ist das noch nicht die Lösung des Problems. Mit dieser Einstellung kommt man nicht mehr an die Unterseiten heran. Also muss eine Anzeige der Unterseiten her, sobald eine Hauptseite mit Unterseiten aufgerufen wird. Realisieren kann man das ganze mit einem relativ kurzen Code-Schnipsel. In meinem Fall liegt der Code ganz am Anfang der sidebar.php, weil ich das Menü für die Unterseiten ganz oben in der Sidebar haben wollte. Der Code lässt sich aber beliebig in der sidebar.php oder an anderen Stellen platzieren:
Sidebar danach

<div id=”sidebar”>
<?php
if($post->post_parent)
$children = wp_list_pages(”title_li=&child_of=”.$post->post_parent.”&echo=0″); else
$children = wp_list_pages(”title_li=&child_of=”.$post->ID.”&echo=0″);
if ($children) { ?>
<h2>Unterseiten</h2>
<ul>
<?php echo $children; ?>
</ul>

Im kleinen Bild rechts oder beispielsweise unter Content kann man das Ergebnis bewundern. Übrigens wird das Menü mit den Unterseiten nur gezeigt, wenn die Seite auch wirklich Unterseiten hat. Wer es überprüfen möchte, kann einen Blick auf mein Impressum werfen. Keine Unterseiten - kein Menü!
Nächster Tagesordnungspunkt: Tags und Kategorien anzeigen - aber ordentlich bitte.

Kategorien: Wordpress