Archiv für die Kategorie „WordPress“

Dynamischer Austausch von Headergrafiken über Conditional Tags

15

Apr

2009

Über Conditional Tags steht in WordPress eine leistungsfähige Funktion zur Anpassung der Darstellung für spezifische Inhalte zur Verfügung.

Als kleines Beispiel soll folgender Fall dienen:

Jede Hauptseite soll ihre eigene Header-Grafik bekommen, ohne dass hierfür verschiedene Templates benötigt werden. Grundsätzlich ist natürlich die Erstellung von separaten Templates für jede benötigte Hauptseite eine mögliche Option, hierdurch vergrößert sich aber der Pflegeaufwand der Website, da für jede neue Seite ein weiteres Template angelegt und zugewiesen werden muss.

Über Conditional Tags lässt sich der zukünftige Pflegeaufwand der Site bei neuen oder geänderten Seiten komplett in die CSS-Datei des Themes verfrachten:

Wir schreiben in den Header unseres Themes folgende Abfrage:

<?php if (is_front_page()) { ?>
  <div class="home">
<?php } else { ?>
  <div class="<?php echo $post->post_name; ?>">
<?php } ?>

Hierdurch wird folgendes bewirkt:

Befindet man sich auf der Homepage, wird die class „home“ in den Header geschrieben, die wir nur noch über CSS mit der entsprechenden Hintergrundgrafik  versorgen müssen, die restlichen Seiten bekommen einfach den Titel des jeweiligen Posts als class verpasst.

Das funktioniert natürlich nur begrenzt bei extrem langen Post-Titeln und setzt voraus, dass sich diese Titel nicht ändern. Im Falle einer „klassischen“ Website wie dieser mit Menüpunkten  wie Home, Profil, Technologie, usw. funktioniert dies jedoch wunderbar und macht die Pflege sehr einfach.

Viel Spass beim Testen!

Mehrere single.php Templates nutzen

14

Apr

2009

Sobald man in einem WordPress-Web einen einzelnen Artikel anzeigen lässt, wird für diesen Aufruf von WordPress das single.php Template verwendet. Wenn man die single.php Datei anpasst, wirkt sich das auf das Aussehen aller damit angezeigten Artikel aus. Dieser Effekt ist manchmal nicht erwünscht, denn unter Umständen möchte man beispielsweise Presseartikel anders strukturieren als Event-Einträge. Leider kann man dafür nicht einfach unterschiedliche Templates erzeugen und (wie bei Seiten) einfach dem jeweiligen Artikel zuweisen. Mit ein wenig PHP-Code kann man WordPress aber „überlisten“.

Dafür erstellt man zunächst zwei Kopien der single.php Datei und benennt sie beispielsweise in single-presse.php und single-event.php. In diesen Dateien nimmt man seine gewünschten Änderungen vor. Anschließend nimmt man sich noch einmal die „reguläre“ single.php vor und ersetzt den kompletten Inhalt durch eine Query vergleichbar mit der folgenden:

<?php $post = $wp_query->post;
if ( in_category('5') ) {
  include(TEMPLATEPATH . '/single-presse.php');
} else {
  include(TEMPLATEPATH . '/single-event.php');
}
?>

In diesem Fall entspräche die Kategorie 5 der Kategorie für Pressemeldungen. Die Abfrage stellt fest, ob ein Artikel aus der Kategorie Presse aufgerufen wird. Falls ja, wird das Single-Presse-Template aufgerufen, falls nein, das Single-Event-Template. Wenn weitere Templates benötigt werden müssen sie durch elseif-Abfragen eingebunden werden.

Kategorie-Highlighting in Menüs

09

Apr

2009

WordPress selbst vergibt beim Browsen in Kategorie-Menüs die Klassen „current-cat“ und „current-cat-parent“, mit deren Hilfe man per CSS dafür sorgen kann, dass auch bei einem kategoriebasierenden Menü der jeweils aktive Menüpunkt gehighlightet bleibt.

Sobald man jedoch in die Single-Post-Ansicht wechselt, ist leider Schluss damit. Die Klassen „current-cat“ und „current-cat-parent“ sind nicht mehr verfügbar und das so schön übersichtliche Navigations-Highlighting ist verschwunden.

Ein nützliches Plugin namens „Show Active Category“ behebt dieses Problem. Nach der Installation und Aktivierung des Plugins wird jede Kategorie, zu der ein Artikel gehört, um die Klasse “active_category” ergänzt, die man nun wieder per CSS entsprechend stylen kann. So bleibt auch in der Single-Post-Ansicht die jeweilige Kategorie im Navigationsmenü hervorgehoben.

Plugin-Homepage

Flexible Sortierreihenfolge bei Kategorien

09

Apr

2009

Das Plugin „PageMash“ dürfte zu den bekanntesten und beliebtesten Plugins von WordPress gehören. Liefert es doch schließlich das essentielle Feature, alle Seiten eines WordPress Projektes ganz simpel per Drag-and-Drop in einer frei gewählten Reihenfolge aufzulisten.

Wer aber seine Webseite nicht Seitenbasierend sondern Kategoriebasierend aufbauen möchte, und dafür ein Navigationsmenü aus Kategorien erstellen muss, steht zunächst vor einem Problem. Standardmäßig kann man mit wp_list_categories Kategorien alphabetisch oder nach Anzahl der darin enthaltenen Posts sortieren. Diese Möglichkeiten sind leider nicht flexibel genug um damit ein Navigationsmenü nach eigenen Wünschen aufzubauen.

Ein „PageMash“-Plugin für Kategorien wäre hier genau das, was man benötigt, um die Kategorien in einer frei gewählten Reihenfolge aufzulisten. In kluger Kopf hat dies in der Tat bereits erkannt und ein Plugin programmiert, das genau diese Anforderungen erfüllt: „My Category Order“ (Die Bezeichnung CategoryMash wäre auch zu einfach gewesen und hätte mir einige Stunden Suche erspart – aber man will ja nicht undankbar sein).

Mehr zu „My Category Order“ auf WordPress.org