Praxis: Sidebar für eine bestimmte Kategorie

WordPress Theme und seine Templates
WordPress Theme und seine Templates

Wie geht man vor, um für eine bestimmte Kategorie eine anders gestaltete/aufgebaute (auch mit Widgets bestückte) Sidebar aufzurufen? – Dies wurde ich per E-mail gefragt. Ich zeige hier in diesem Artikel einen Weg auf. Doch wie immer gilt, es gibt ganz viele Wege nach Rom ;). Kommt drauf an was man schlussendlich wirklich alles braucht.

Wenn solche Arbeitsschritte erklärt werden liest sich dies meist langsamer als es dann gemacht wird. Und ich versuche immer sehr genau zu erklären, so dass Du dies wirklich 1:1 nachmachen kannst.

Was man dazu braucht:

  • Einen Texteditor (WordPad ist keiner)
  • die category.php oder archive.php des verwendeten Themes.
  • den „Category Slug“ der gewählten Kategorie.
  • die sidebar.php.
  • die functions.php um dort neue Widgets einzutragen und für ein paar neue Funktionen.

das neue Template category-slug.php erstellen

Um die Übersicht in dem ThemeOrdner zu bewahren ist es günstig für solche Aktionen wirklich ein eigenes category-slug.php Template zu erstellen.

Einfach die category.php, wenn die nicht da ist im ThemeOrdner, dann die archive.php öffnen und als category-slug.php abspeichern.

Den „Slug“ einer Kategorie findest Du entweder in der URL, oder Dashboard ==> Artikeln==>Kategorie==> Titelform.

WordPress erkennt solche Templates von sich aus, dies habe ich mal hier beschrieben.

das neue Template sidebar-categoryslug.php

Ebenfalls der Übersicht wegen ist es günstig, die neue Sidebar unter dem „Slug“ /Titelform dieser Kategorie abzuspeichern.

Also sidebar.php öffnen und als sidebar-categoryslug.php abspeichern.
WordPress erkennt dieses Template (noch) nicht von selbst, aber es erleichtert ungemein den Durchblick ;)

category-slug.php und sidebar-categoryslug.php bekanntmachen

Naja mir fiel da jetzt wirklich keine andere Überschrift ein, aber die category-slug.php weiß noch nicht, dass sie die neue Sidebar sidebar-categoryslug.php herzeigen sollte, also muss man es ihr sagen. ;)

Ganz am Ende der category-slug.php steht sicher:


get_sidebar();

Steht dies nicht dort, dann ist dieses Theme sicher ein eigenes Framework und ich tät dann davon abraten dies zu tun, außer man kennt sich in PHP gut aus => oder man fragt die ThemeErsteller.

Aber findest Du dort get_sidebar dann kann man WP sagen, dass es da eine spezielle Sidebar gibt:


get_sidebar('categorslug');

Nun sucht WP nach einem Template das sidebar-categoryslug heißt und nimmt es.

Ab jetzt kann man in dieser Sidebar anzeigen was auch immer man mag, es wird nur für diese Kategorie genommen.

functions.php neue Widgets erstellen

Meist stehen in der functions.php bereits Widgets, dort findet man dann auch wie das HTML für dieses Theme dort angeben ist. Ich nehm hier Beispiele aus TwentyTen Eleven.

register_sidebar( array(
'name' => __( 'CategorySlugKATS', 'twentyeleven' ),
'id' => 'sidebar-8',
'description' => __( 'The sidebar for the special Category CategorySlug', 'twentyeleven' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );

Dies in die functions.php kopieren und dort sooft kopieren wie Du Widgets brauchst. name, id und description ändern, so dass es für Dich gut verständlich ist wofür dieses Widget da ist. ;)
Sollte in der functions.php bereits ein Widget mit der ID 8 sein, dann logischerweise bitte eine andere nehmen. IDs kann es immer nur eine geben :-)

Widget1 oder Widget3 ist ganz nett, aber sagt Null, Nade Nix aus und spätestens nach 3 Monaten fragt man sich was das da soll.

Widgets erstellt und nun in der sidebar-categoryslug.php abrufen.

In der sidebar-categoryslug.php stehen vielleicht schon Widgets. Keine Ahnung, wenn dann löschen und durch das ersetzen.


<?php if ( ! dynamic_sidebar( 'sidebar-8' ) ) : ?>


<?php endif; // end sidebar widget area  ID 8 ?>

sidebar-8 => die ID (!)

Hast du für diese Sidebar mehrere solche Widgets „Flächen“ erstellt, dann eben sooft wiederholen wie nötig und die IDs anpassen.

Alle Templates hochladen. Unter Dashboard=> Design=>Widgets diese befüllen und fertig biste.

Haben nun auch alle Artikel dieser Kategorie diese Sidebar

Nein.

Diese Sidebar wird aber nur in der Kategorie genommen. Sie erscheint noch nicht bei den Artikeln in dieser Kategorie.

Das aber wird ein nächster Artikel unter dem Stichwort: aus der Praxis….., weil sonst wirds wirklich zulang.

Hast Du Fragen dazu einfach fragen bitte.
10

10 Beiträge zu “Praxis: Sidebar für eine bestimmte Kategorie

  1. Kommentar Autor
    ad
    Kommentar

    Ich nehme dazu das Plugin Dynamic Widgets. Die Konfigurationsmöglichkeit ist sehr umfangreich und umfasst auch den Einsatzbereich, den du hier abdeckst.

  2. Kommentar Autor
    Martin
    Kommentar

    Bin auch mit Dynamic Widgets sehr zufrieden, aber man soll sihc ja nicht versteifen :-)

  3. Kommentar Autor
    Monika
    Kommentar

    oh ja das Plugin ist gut, keine Frage,

    hie und da gibts aber immer noch Hoster, die in ihrem „absolut günstig“ Paket ein irr kleines PHP Ausführungslimit erlauben, mit absolut keiner Chance es zu erhöhen,
    da ist die Einsparung eines jeden Plugins „bares“ wert ;)

    und nicht, dass ich da einen bestimmten Hoster wie EinsundEins oder so im Kopf hätt, also wirklich nicht -ehrlich nicht…

    ..
    .

  4. Kommentar Autor
    Manni
    Kommentar

    Es sind nicht nur die „billigen“ Hoster:

    Plugins benötigen nicht nur Arbeitsspeicher, sondern verlängern auch die Ladezeit einer Seite.

    User mit geringer Bandbreite meiden meist solche Seiten.

    Ein kleiner Eingriff in die PHP-Datei ist schnell erledigt und die Seite läuft perfekt, ohne unnötigen Code.

  5. Ping WordPress: Für eine bestimmte Kategorie eine Sidebar erstellen » SigisWorld

  6. Kommentar Autor
    Thomas
    Kommentar

    Fertigst du auch zu der Frage „Haben nun auch alle Artikel dieser Kategorie diese Sidebar“ einen Beitrag an, in dem du beschreibst, wie man das macht? :)

  7. Ping Links

  8. Ping Wordpress