datenschmutz - Social Marketing, Pro-Blogging und medien.kultur.technik
 
img_4756.jpg Wintereinbruch in Lienz, 2008 London 2007 img_4530.jpg Mike und Georg
datenschmutz RSS Feed
873 zufriedene Leser
RSS jetzt abonnieren
Twitter
38012 Followers
auf Twitter folgen
datenschmutz Adventkalender: jeden Tag 1 Stofftier zu gewinnen!

Unterschiedliche Templates für Einzelbeiträge

22.12.2007, geschrieben von , 13 Kommentare

Mit kann man den sta­ti­schen Seiten mit Bordmitteln unter­schied­li­che Templates zuwei­sen: Unter dem Menüpunkt Seiten-Template fin­det sich eine Liste aller ver­füg­ba­ren Vorlagen. Für Einzelbeiträge funk­tio­niert dies nicht ohne einen klei­nen Eingriff — mit kate­go­rie­ba­sier­ten Conditional Tags lässt sich diese Aufgabe aber ele­gant lösen. Um ande­ren die glei­che Suche zu erspa­ren, habe ich eine kleine Anleitung zusammengestellt.

Die hier beschrie­bene Lösung macht frei­lich nur dann Sinn, wenn man das betref­fende Layout mehr­fach ver­wen­den möchte, denn sie beruht auf der Abfrage der Kategorie: befin­det sich ein bestimm­ter Einzelbeitrag (unter ande­rem) in der Kategorie X, so soll nicht das Standard– single.php, son­dern ein ande­res zum Einsatz kom­men (1). Konkret bin ich auf das Problem gesto­ßen, weil ich das Who sees ads? ver­wen­den: damit lässt sich kon­di­tio­nal ein­blen­den — ich binde damit die zwi­schen Über­schrift und Content ein, und zwar so, dass nur Google-Besucher und Gelegenheitsleser mar­ke­ting­tech­nisch pene­triert wer­den, daten­schmutz StammleserInnen jedoch ver­schont blei­ben von den sen­sa­tio­nel­len Angeboten, die Zanox & Co. zur Verfügung stellen.

So weit, so gut — doch die Einbindung von Werbung direkt im Beitrag wider­spricht den Richtlinien von tri­gami. Allerdings rufe ich das Plugin im Template auf: wäre ja auch viel zu müh­sam, die Zeile in jeden ein­zel­nen Beitrag zu kopie­ren. Also erschien es mir am sinn­volls­ten, eine eigene Kategorie für trigami-Reviews zu defi­nie­ren und Beitragen, die (auch) die­ser Kategorie ange­hö­ren, ein eige­nes Single-Template zuzu­wei­sen. Das hat übri­gens noch einen wei­te­ren Vorteil: man kann die “das ist eine bezahlte Rezension”-Kennzeichnung gleich direkt ins Template-File ein­fü­gen. Hier eine kurze Schritt-für-Schritt Anleitung — die nöti­gen Informationen dazu hab ich nach eini­ger Suche gut ver­steckt im WordPress-Codex gefun­den; ein Plugin, das die Page-Template Funktionalität auch für Einzelbeiträge nach­rüs­tet, exis­tiert einst­wei­len noch nicht — das wär natür­lich die ele­gan­teste Variante.

Anderes Template für ein­zelne WordPress-Beiträge

Die betref­fende Abfrage gehört in die single.php-Datei, die sich im Theme-Verzeichnis befin­det (2). Bevor diese umge­mo­delt wird, sollte aber zuerst die neue Kategorie ange­legt wer­den — denn für die Modifikation der single.php benö­tigt man die ID der betref­fen­den Kategorie; diese wird übri­gens bei der Kategorienliste im Backend in der ers­ten Spalte ange­zeigt. Nehmen wir für unser Beispiel mal an, unsere Kategorie für devi­an­tes hätte die ID #34. Wir gehen vor wie folgt:

  1. Umbenennen der Datei single.php in single-standard.php.
  2. Erstellen einer zwei­ten Datei single-anders.php: dabei han­delt es sich um die alter­na­tive Design-Variante für unsere Einzelbeiträge.
  3. Anlegen einer neuen single.php-Datei mit der Kategorieabfrage:

    < ?php
    $post = $wp_query->post;
    if ( in_category(‘34’) ) {
    include(TEMPLATEPATH . ‘/single-anders.php’);
    } else {
    include(TEMPLATEPATH . ‘/single-standard.php’);
    }
    ?>

    Es gibt diese Datei gezippt auch hier als Download: single.php
    Achtung: die Kategorie-ID muss natür­lich ent­spre­chend ange­passt werden!

So, das war’s auch schon — mehr gibt’s nicht zu tun. Die neue single.php fun­giert sozu­sa­gen als Weiche: wich­tig ist dabei die Abfrage in_category (as oppo­sed to: is_category), die über­prüft, ob der betref­fende Beitrag zur Kategorie mit der ange­ge­be­nen ID gehört. Falls ja, so bekommt der Beitrag in unse­rem Beispiel das Template single-anders.php zuge­wie­sen, wenn nicht, so kommt statt­des­sen die Vorlage single-standard.php (also die ehe­ma­lige single.php) zum Einsatz.

strong>Nochmal Achtung: beim Copy-Pasten unbe­dingt die Anführungszeichen kor­ri­gie­ren! Und: die Abfrage in_category ver­steht die übli­che Angabe meh­re­rer durch Beistriche getrenn­ter IDs nicht. Stattdessen muss man auf php zurück­grei­fen, also:

if ( in_category(‘34’) ) || in_category (15) || in_category (16)

Wer mit der kate­go­rie­ba­sier­ten Filterung nichts anfan­gen kann, sollte einen Blick auf das Plugin Custom Post Templates wer­fen: es über­prüft, ob im Template-Verzeichnis eine Datei mit dem Namen single-POSTID (POSTID steht für die ID des ein­zel­nen Beitrags) exis­tiert — falls ja, wird diese für den jewei­li­gen Beitrag ver­wen­det: so ließe sich pro­blem­los ein mys­pace– gestal­ten, in dem jedes Posting völ­lig anders aus­sieht elk Unterschiedliche Templates für Einzelbeiträge


(1) Wer die betreffende(n) Kategorien nur für die Designumstellung benut­zen und ansons­ten aus­blen­den will, kann diese pro­blem­los beim Kategorie-Listen-Aufruf aus­fil­tern, siehe WordPress Codex.

2) Manche Themes haben keine sol­che single-Datei, son­dern benut­zen eine Abfrage in der index.php — die hier beschrie­bene Vorgangsweise funk­tio­niert trotz­dem, aller­dings muss man natür­lich beide single-Varianten erst erstellen.

Keine ähnli­chen Beiträge.


Bisher haben meine Lieblingsleser 13 Kommentare zu "Unterschiedliche Templates für Einzelbeiträge" geschrieben.

Wie ist Ihre Meinung?
  • mo. Identicon Icon

    hey richie, schö­ner bei­trag. ich hatte mir diese frage auch schon gestellt. was ich schade finde, dass man für sei­ten ein­zelne tem­pla­tes aus­su­chen kann, aber nicht für arti­kel selbst. dein “tweak” ist klasse, trotz­dem finde ich es erstaun­lich, dass diese funk­tio­na­li­tät in word­press nicht stan­dard ist. beson­ders, wenn man län­ge­rer arti­kel wie anlei­tun­gen schreibt, machen abge­stimmte tem­pla­tes sinn.

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

  • Oliver Identicon Icon

    Ich habe die­ses Problem mit einer WordPress Variable gelöst. Ist diese gesetzt, wird in die­sem Trigami-Fall keine Werbung angezeigt:

    if(get_post_meta($post->ID, ‘TrigamiArtikel’)) {
    echo “”;
    } else {
    wp_ozh_wsa(“google-rot”);
    }

    Aber trotz­dem danke für dei­nen Artikel. Mehrere Templates machen natür­lich auch an ande­rer Stelle Sinn.

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

    ritchie Identicon Icon
    ritchie antwortete am 3. Januar 2008 um 16:26

    Sehr ele­gante Methode, gute Idee :mrgreen:

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

  •  Identicon Icon
    Anonymous sagte am 3. Januar 2008 um 17:19

    Wäre es nicht noch schö­ner den Namen der Kategorie zu ver­wen­den, statt ihrer ID?
    (vor­aus­ge­setzt das ist möglich)

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

  • Tobi Identicon Icon

    Eine super Idee, die ich mir defi­ni­tiv mal genauer anschauen werde, wenn ich Zeit finde, da es mir durch­aus ent­ge­gen­kom­men würde. Nicht zuletzt wegen der “auto­ma­ti­schen” Kennzeichnung…

    Vielen Dank für deine Mühe und das Tut…

    Beste Grüße aus Berlin

    Tobi

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

  • YAvuz Identicon Icon
    YAvuz sagte am 5. März 2008 um 12:29

    Wie du bereits ganz zum Schluss beschrie­ben hast, in mei­nem theme gibt es keine single.php
    Wie wende ich das dies genau in dem Fall an?!

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

    ritchie Identicon Icon
    ritchie antwortete am 5. März 2008 um 13:22

    Kommt drauf an, wie dein theme auf­ge­baut ist — ver­wen­dest du die single-view gar nicht, oder ist die im index via php-Abfrage ein­ge­baut? Ich nehme an zwei­te­res, sonst bräuch­test du ja kein tem­plate für ein­zelne bei­träge. Du könn­test dann natür­lich in der index.php die ent­spre­chen­den Abfragen ein­bauen, wird halt auf Dauer ein biss­chen unübersichtlich.

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

    Yavuz Identicon Icon
    Yavuz antwortete am 5. März 2008 um 19:56

    Ich nutze die­ses theme:
    http://www.revolutiontheme.com.….ution-tech

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

    ritchie Identicon Icon
    ritchie antwortete am 5. März 2008 um 20:44

    Ah, ver­stehe — das ist sehr stark ange­passt und eher maga­zin­ar­tig auf­ge­baut… kenn’s nicht im Detail, da bin ich überfragt.

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

  • Paula Identicon Icon

    sind doch en paar coole sachen dabei..
    ganz gute tem­pla­tes..
    die links aus den com­ments die er gepos­tet hat kommt man auch auf gute sei­ten..
    Paula :saint:

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

    Ritchie Blogfried Pettauer Identicon Icon
    Ritchie Blogfried Pettauer antwortete am 19. Januar 2010 um 20:47

    Jaja, Studiopress macht schon sehr feine Sachen! Nur der Stunt mit Revolution zuerst kos­ten­pflich­tig, dann gra­tis, dann doch wie­der kos­ten­pflich­tig war sehr eigenartig.

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

  • Alex Identicon Icon
    Alex sagte am 6. Februar 2010 um 17:47

    Super Lösung, genau sowas habe ich gesucht, vie­len Dank!

    Woran ich gerade etwas ver­zwei­fel: kann man die Abfrage auch so gestal­ten, dass man mit “child_of” arbei­tet? Also ver­schie­dene Templates für alle Unterkategorien einer Kategorie?

    Beste Grüße,
    Alex

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

    Ritchie Blogfried Pettauer Identicon Icon
    Ritchie Blogfried Pettauer antwortete am 14. Februar 2010 um 18:30

    Hi Alex, mit “child_of” hab ich noch nie gear­bei­tet; da müss­test du im WP-Codex nach­schauen. Aber gene­rell kannst du das auch über eine Liste aller IDs (ist halt müh­sa­mer zu war­ten, je nach­dem, wie oft du die Kategoriern änderst) machen.

    Like or Dislike: Thumb up 0 Thumb down 0

    direkt antworten

Kommentar schreiben

:frog: :frog2: :frog3: :frog5: :frog6: :dirtfrog: :frog4: :frog4o: :frog7: :artfrog: :darkfrog: :elkfrog: :frogface: :frogonleaf: :leefrog: :littlefrog: :princefrog: :coolfrog: :coolfrogjump: :mrt: :smoking666: :borg: :ninja: :satan: :saint: :elvis: :king: :pimp: :pirat: :mrdj: :elk: :cool: :geek: :weird: :mad: :sad: :-? :shock: :anonym: :angel: :kiss: :love2: :coffee2: :white2: :dog: :cat: :ccocktail: :beer: :thumbdown: :thumbup:

3 Track- und Pingbacks zu diesem Beitrag

?
datenschmutz.tribe
         Login | Registrieren
via RSS Feed datenschmutz RSS Feed
als Newsletter
aweber
AlbanianArabicBasqueBelarusianBulgarianCatalanChinese (Simplified)CroatianCzechDanishDutchEnglishFrenchGermanItalianPortugueseRussianSpanish
datenschmutz q+a
Stellen Sie mir Ihre Frage zu Social Marketing, Blogging und Co. — ich ant­worte dem­nächst hier am Blog.
Neueste Beiträge