dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

Verschiedener Seitenhintergrund in WordPress

Zu dem Projekt hatte ich vor kurzem schon mal geschrieben. Hier noch einen andere Aufgabenstellung, die einer individuellen Lösung bedurfte. Jede einzelne Seite hat ein anderes Hintergrundbild, dazu passend andere Schriftfarben und auch die Hintergrundfarbe des body ist dem Hintergrundbild angepasst. Wie gesagt jede Seite. Nur eine nicht, die Artikelseite, die soll bei allen Artikeln den gleichen Hintergrund, etc. haben.

Die einfachste Methode, so etwas zu realisieren, ist dem body eine Klasse zuzuweisen und die entsprechend per CSS zu stylen. Nun zur WordPress-Problematik. Ich habe mir gedacht, ich schreibe einfach den Seitentitel als Klassenname. Mit wp_title() kann man sich ja den Seitentitel ausserhalb von the Loop holen, das wird ja auch so beim Seitentitel gemacht. Nur brauch ich den in einer Variablen, also den 2.Parameter Display auf false setzten, die anderen leer lassen. Der Title hat aber unter Umständen auch Umlaute oder Leerzeichen, also wandelt man ihn mit sanitize_title() um. Meine tolle Seite wird so zu meine-tolle-seite. Das kann man als Klassennamen verwenden.

Also kommt dann ins Stylesheet:


body.meine-tolle-seite {background: #ff0000, color: #00ff00}
usw...

Klappt alles super, wenn da nicht die Artikelseiten wären. Da ich dort nicht weiß, was der Kunde für Artikel anlegen wird, bin ich in dem Fall einen anderen Weg gegangen. Die Artikelseiten benutzen ein spezielles Template, auch wegen der Session. Das Template hat ja logischerweisen einen Dateinamen, und den setzte ich ein. Hier der vollständige Code:


<?php
if ( basename( get_page_template() ) === 'artikelseite.php' ) {
    $bodyclass = 'artikelseite';
} else {
    $bodyclass = sanitize_title( wp_title('', false, ''));
}
?>
<body class="<?php echo $bodyclass ?>">

Passt.

3 Kommentare
  1. Frank sagt:

    Alternativ hätte man eventuell mit the_id() arbeiten können, diese mit einem Wort vorangestellt ergibt eine saubere Klasse oder ID. Aber grundsätzlich ist es die gleiche Idee.

  2. Micha sagt:

    Hey Frank! ja, du hast Recht. Für mich sagt eine Klasse artikelliste in einem Jahr mehr aus als class-7. Vom Code her wärs mit der id einfacher. Dann ist es bei mir auch so, das ich alles erst lokal fertig mache und später dann online stelle. Wenn ich dann nicht in der gleichen Reihenfolge die Seiten schreibe, würde es mit der id auch nicht mehr hinhauen. Weißt, was ich meine?

    LG
    Micha

  3. Frank sagt:

    ja, habe ich auch so gesehen, wollte es nur als Mehrwert hinterlassen, für “Nachbauer” sozusagen.

Einen Kommentar schreiben