Ist das private Weblog von Vladimir Simovic mit Berichten zum Thema WordPress, Webwork, und Internet. Ich wohne in Köln und arbeite als freier Webworker, Blogger und Autor.
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.
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:
<?phpif ( function_exists('register_sidebar') )register_sidebar(array('before_widget' => '','after_widget' => '','before_title' => '<h2>','after_title' => '</h2>',));?>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:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>...<?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.
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:
<?php if ( function_exists('register_sidebar') )register_sidebar(array('name'=>'widget1','before_widget' => '','after_widget' => '','before_title' => '<h2>','after_title' => '</h2>',));register_sidebar(array('name'=>'widget2','before_widget' => '<div id="im-fokus">','after_widget' => '</div>','before_title' => '<h2>','after_title' => '</h2>',)); ?>Jetzt kann man an der gewünschten Stelle im Theme, die zweite dynamische Sidebar einfügen:
<?phpif ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('widgetfeld2') ) : ?><!-- Keine Widgets! --><?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.

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?
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.
1. – Brenrhad
Kommentar vom 17. Februar 2008 um 18:40
Sehr schön erklärt. Danke.
2. – Micha
Kommentar vom 17. Februar 2008 um 18:57
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.
3. – undkonsorten » WordPress: Ein eigenes SidebarWidget Plugin in einer Minute
Pingback vom 18. Februar 2008 um 09:10
[...] ist. Gehen wir der Einfachheit halber mal davon aus, dass das alles gegeben ist. Wenn nicht, hilft dieser Artikel oder dieses Plugin [...]
4. – Steini
Kommentar vom 20. Februar 2008 um 00:10
Hi,
Arbeite mich gerade durch das Praxisbuch. Buch, wie auch der Blog hier ist interessant und gut erklärt.
Gruß,
Steini
5. – David Hellmann
Kommentar vom 01. Mai 2008 um 12:05
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
6. – Maximilian Georg Liebscher
Kommentar vom 28. April 2009 um 14:43
Sehr schönes Tutorial. Hat alles porblemlos funktioniert
danke