Mehrere dynamische Sidebars in WordPress

In WordPress gibt es schon seit sehr langer Zeit die Möglichkeit, die Themes (also die Templates) mit den dynamischen Sidebars aufzuwerten. Vielen sind die dynamischen Sidebars auch unter dem Begriff Widgets bekannt. Seit der Version 2.0 von WordPress gab es eine Möglichkeit dies mit Plugins zu realisieren und seit WordPress 2.2 gehört das fest zum Funktionsumfang von WordPress. Im dritten Teil der Artikelserie (“WordPress-Themes verstehen”), bin ich kurz darauf eingegangen.

Dynamische Sidebar einbinden

Um die Widget-Funktion im eigenen Theme zu gewährleisten muss man als aller erstes, die Datei functions.php erstellen. In dieser Datei muss man als Minimum folgendes eintragen:

  1. <?php
  2. if ( function_exists('register_sidebar') )
  3. register_sidebar(array(
  4. 'before_widget' => '',
  5. 'after_widget' => '',
  6. 'before_title' => '<h2>',
  7. 'after_title' => '</h2>',
  8. ));
  9. ?>

Wobei man hier frei ist, welchen HTML-Code man vor und hinter dem einzelnen Widget und seiner Überschrift unterbringt. Man kann es auch leer lassen. Die Datei functions.php lädt man in den jeweiligen Themes-Ordner hoch. Nun muss man in dem Theme eine Stelle finden wo man die Ausgabe der Widget-Inhalte haben will. Hier gibt es mehrere Vorgehensweisen: entweder wird die Seitenleiste komplett durch die Widgets gesteuert oder nur Teile der Sidebar:

  1. <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
  2. ...
  3. <?php endif; ?>

Da wo jetzt die Auslassungszeichen notiert sind, kann man entweder nur ein HTML-Kommentar oder sogar die ganze Standard-Sidebar einfügen, die erscheint, wenn die dynamisch Sidebar deaktiviert ist. Wie gesagt, das ist davon abhängig welche Vorgehensweise man bevorzugt. Wenn man die Datei hochgeladen hat und im Theme die dynamische Sidebar eingebunden hat kann man im Admin-Bereich unter “Themes” » “Widgets” die Widgets aktivieren und mit Inhalt füllen. Zur Auswahl stehen mehrere Widgets: Kategorien, Archiv, Kalender, Links, RSS, Textboxen etc. Und je nach dem welche Plugins sich im Einsatz befinden auch diverse Plugin-Widgets.

Das interessante an den Text-Widgets ist, dass man sie mit HTML und Javascript aufwerten kann. Ist das exec-php-Plugin aktiv auch mit PHP-Code. Das RSS-Widget ist deswegen interessant, weil man damit externe aber auch interne Newsfeeds einbinden und ausgeben kann: z.B. del.icio.us-Links oder die Kommentare aus dem eigenen Weblog.

[adrotate group=”6″]

Mehrere dynamische Sidebars

So weit so gut, was aber wenn ich die Funktionalität der dynamischen Sidebar auf mehreren Stellen haben will und das nicht nur in der Seitenleiste sondern z.B. im Kopf- oder Fußbereich der Seite? Die Vorgehensweise hierbei ist sehr einfach, mann muss in der functions.php einen weitere dynamische Sidebar definieren:

  1. <?php if ( function_exists('register_sidebar') )
  2. register_sidebar(array('name'=>'widget1',
  3. 'before_widget' => '',
  4. 'after_widget' => '',
  5. 'before_title' => '<h2>',
  6. 'after_title' => '</h2>',
  7. ));
  8. register_sidebar(array('name'=>'widget2',
  9. 'before_widget' => '<div id="im-fokus">',
  10. 'after_widget' => '</div>',
  11. 'before_title' => '<h2>',
  12. 'after_title' => '</h2>',
  13. )); ?>

Jetzt kann man an der gewünschten Stelle im Theme, die zweite dynamische Sidebar einfügen:

  1. <?php
  2. if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('widgetfeld2') ) : ?>
  3. <!-- Keine Widgets! -->
  4. <?php endif; ?>

Diesen Code-Block habe ich in der index.php dieses Weblogs eingefügt um den Text-Block mit der Überschrift “Im Fokus” anzuzeigen. Man sollte dabei auch nicht vergessen, den Code für die Einbindung der ersten dynamischen Sidebar entsprechend anzupassen.

Mehrere Widgets bzw. dynamische Sidebars
Die Verwaltung mehrerer dynamischer Sidebars

In der oberen Abbildung sieht man dann, wie man mehrere dynamische Sidebars verwaltet. Ich denke mal, dass die Vorgehnsweise selbsterklärend ist, so dass ich jetzt nicht näher darauf eingehen muss … oder?

[adrotate group=”5″]

Vor- und Nachteile von mehreren dynamischen Sidebars

Die Vorteile der dynamischen Sidebar liegen klar an der Hand: man kann komfortabel aus dem Admin-Bereich entweder die ganze oder Teile der Sidebar verwalten. Bei mehreren dynamischen Sidebars könnte man somit mehr oder weniger komplette Seiten-Bereiche -Menü, Fußbereich etc. – verwalten.

Aber es gibt auch potentielle Nachteile, zum einen können vor allem bei Gemeinschaftsblogs oder bei Blogs, die man für Kunden aufgesetzt hat Inhalte in Bereiche reinkommen, die dafür nicht vorgesehen waren oder man könnte aus versehen, den Inhalt eines Widgets löschen ohne einen Backup zu machen. Allerdings kann man dies recht einfach in den griff bekommen.

Es gibt einen imho gravierenderen Nachteil, von dem von der offiziellen Seite gewarnt wird (finde jetzt leider den Link nicht), dass beim Einsatz von vielen dynamischen Sidebars, die Geschwindigkeit der Website in die Knie gehen kann. Deswegen ist es geplant, dass in der Version 2.5 auch die Leistung der Widgets verbessert wird. Ab welcher Anzahl der dynamischen Sidebars, der Aufbau der Website verlangsamt wird, wurde in der Quelle nicht erwähnt.

Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienst­leistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.

Verwandte Beiträge:

15 Kommentare

  1. Die Geschwindindigkeit ist abhängig von der Anzahl der Sidebars und von der Anzahl der verwendeten Widgets. Jeder Container und jedes einzelne Widget verursachen einen Eintrag in der options-Tabelle, der natürlich gelesen werden muß.
    Übrigens haben Frank Bültge und ich ein witziges Experiment gemacht und haben einen kompletten Blog nur mit Widgets gebaut. Kannst es dir ja mal anschauen. Leider ist es in der Tat so, das man keinerlei Kontrolle darüber hat, was wo reindarf und wo nicht.
    Neu wird in WP2.5 sein, daß man den Widgets eine Beschreibung mitgeben kann, wenigstens eine kleine Möglichkeit, etwas zu erklären.

  2. Hi,

    Arbeite mich gerade durch das Praxisbuch. Buch, wie auch der Blog hier ist interessant und gut erklärt.

    Gruß,

    Steini

  3. Hallo, jetzt habe ich mal eine andere Frage, und zwar ist es möglich, dass man ein Template erstellt zb. “sidebar-block” und dann ganz normal in wordpress eine seite schreibt und diese dann im Sidebar ausgibt?

    also so nach dem mott:

    if home show “block-home”

    im moment hab ich alles in die sidebar.php geschrieben. Wenn ich es aber über Seiten realisieren würde könnte ich es viel besser updaten und müsste nicht immer in den Theme Dateien rumschreiben.

    Gibt es da was?

    Grüße
    David

  4. Sehr schönes Tutorial. Hat alles porblemlos funktioniert 😆 danke

  5. Soweit klappt das alles sehr gut.

    Frage zu einer Webseite, die auf SEITEN / PAGES aufbaut.

    ALLE Seiten sollen auf Sidebar 1 zugreifen
    Die Ausnahme bieten die Seiten mit der ID 2, 5, 22 – hier soll die Sidebar 2 angezeigt werden

    Wie macht man dies?

  6. @Tobias: Entweder schreibst du in deine page.php:

    if ( is_page ( array( 2,5,22 ) ) ) {
    get_sidebar( 'one' );
    } else {
    get_sidebar( 'two' );
    }

    In diesem Fall sollten deine Sidebars sidebar-one.php bzw. sidebar-two.php heißen.
    2. Möglichkeit: Du erstellst ein neues page-Template in welchem du die 2. Sidebar einbindest und weist dieses Template den Seiten mit der ID 2,5,22 zu.

  7. […] This post was mentioned on Twitter by Vladimir Simovic, Wolfgang Wiese. Wolfgang Wiese said: RT @vlad_perun: Mehrere dynamische Sidebars in WordPress http://bit.ly/dgLgxO #wordpress #widgets […]

  8. Und wie mache ich das, wenn ich schon 1 Widget-Area (mit 4 Bereichen) im Footer habe und noch mal so 1 Widget-Area (mit 4 Bereichen) im Header haben will?

    Einfach kopieren klappt nicht, da ich nicht weiß/verstehe was genau in dieses “footer” definiert oder wo das liegt. In der Functions.php konnte ich nix finden dazu.

Kommentare sind geschlossen.