Diese Seitenleisten werden für alles verwendet, was mit der Site zu tun hat: Navigationsmenü, Übersichten, Suchfunktion, Archive/Kategorien/Tags, Metadaten zum Artikel bis hin zu Flickr-Photos, del.icio.us-Lesezeichen oder Chat-Boxen. Elemente einer Seitenleiste heißen in Wordpress "Widgets" und in Serendipity "Seitenleistenplugins". Seitenleistenplugins (in s9y) oder Widgets (in Wordpress) haben den Vorteil, dass ihre Anordnung und Position in der Seitenleiste mit der Maus (per Drag&Drop) bestimmt werden kann. Dies versetzt auch Anwender, die nicht im Quellcode wühlen wollen/können, in die Lage das Aussehen der Seitenleisten zu beeinflussen. Deshalb sind sie gerade für Bloghoster oder Freelancer interessant, die diese Möglichkeit ihrer Klientel anbieten möchten.
Sidebar plugins oder Widgets funktionieren in beiden Blogsystemen sehr ähnlich, müssen aber unterschiedlich beim Theme/Template-Design umgesetzt werden.
Umsetzung in Wordpress-Themes
Theme-Entwickler, die unter Wordpress Widgets unterstützen wollen, müssen nach Installation des Widgets-PlugIns 2 Dateien modifizieren: die
functions.php und die sidebar.php (beides muss im Theme-Verzeichnis liegen). Dabei wird empfohlen, möglichst ul/li-Markup für die Seitenleiste einzusetzen. Andernfalls müssen in der functions.php die geänderten Parameter mitgegeben werden. Die sidebar.php zeigt folgendes Gebilde
<ul id="sidebar">
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar() ) : ?>
<li id="about">
<h2>About</h2>
<p>This is my blog.</p>
</li>
<li id="links">
<h2>Links</h2>
<ul>
<li><a href="http://example.com">Example</a></li>
</ul>
</li>
<?php endif; ?>
</ul>
... und die
functions.php beinhaltet:
<?php
if ( function_exists('register_sidebar') )
register_sidebar();
?>
Nach diesen Template-Modifikationen hat man in Wordpress eine Widgets-Leiste. Um eine zweite hinzubekommen, muss man in der README des Widgets-Plugins lesen:
I HAVE A THEME WITH MORE THAN ONE SIDEBAR. HOW DO I MAKE THEM ALL DYNAMIC?
Oh, that's easy. Instead of register_sidebar() you should use
register_sidebars(n) where n is the number of sidebars. Then place the
appropriate number in the dynamic_sidebar() function, starting with 1. There are
several ways to dse these functions but they aren't all documented here. You can
even give your sidebars names rather than numbers, which lets you maintain a
different set of saved sidebars for each theme. But if you need to know so much
about the plugin, why aren't you reading the source code?
Demnach sieht die
functions.php bei 2 Widgets-Leisten so aus:
<?php
if ( function_exists('register_sidebar') )
register_sidebars(2, array('name'=>'Sidebar %d'));
?>
... und die Sidebars werden per
<ul id="sidebar1">
<?php if (function_exists('dynamic_sidebar')
&& dynamic_sidebar(1) ) : else : ?>
...
<?php endif; ?>
</ul>
und
<ul id="sidebar2">
<?php if (function_exists('dynamic_sidebar')
&& dynamic_sidebar(2) ) : else : ?>
...
<?php endif; ?>
</ul>
aufgerufen.
Umsetzung in Serendipity-Templates
In Serendipity ist die Seitenleistenpluginfunktionalität schon werksmäßig eingebaut. Zwei Leisten, um genau zu sein. (Und eine dritte mit "versteckt" betitelte Leiste.) Das deckt schonmal die häufigsten Fälle ab. Um sie aufzurufen, platziert man ins Template nur noch ein
{if $leftSidebarElements > 0}
{serendipity_printSidebar side="left"}
{/if}
bzw.
{if $rightSidebarElements > 0}
{serendipity_printSidebar side="right"}
{/if}
... in die gewünschte Stelle und kann die PlugIns nutzen.
Wer die direkte Kontrolle im Template will, kann einzelne PlugIns auch als Smarty-Funktion aufrufen. Wer mehr als 2 Leisten widgetalisieren möchte, muss (sofern sie nicht schon eine existiert) im Template-Verzeichnis eine
config.inc.php mit folgendem Inhalt erstellen (wenn schon Anweisungen vorhanden sind, einfach dazu packen)
$template_config = array(
array(
'var' => 'sidebars',
'title' => 'Sidebars',
'type' => 'string',
'default' => 'left,hide,right,third,forth'
)
);
In diesem Beispiel hat man dann 2 Leisten mehr zur Verfügung und kann sie entsprechend per
{serendipity_printSidebar side="third"}
oder
{serendipity_printSidebar side="forth"}
in die gewünschten Stellen im Template einbauen.
Links zum Thema
Serendipity - Sidebar Plugins
- Serendipity Drag and Drop Plugin-Manager
- Serendipity Plugins - Seitenleisten und Events
- SPARTACUS Sidebar Plugin Repository (RSS-Feed
- Using Sidebar PlugIn - s9y-Doku
Wordpress Widgets
- WordPress Widgets PlugIn by Automattic
- WordPress Widgets Blog
- Plugin/Wordpress Widgets im Codex
