WordPress-Widgets und s9y-Seitenleistenplugins

Die meisten Weblogs oder News-Sites bestehen aus einem 2- oder 3-spaltigen Layout. Manchmal auch nur eine, manchmal auch 4, manchmal Variationen daraus. Aber die meisten haben 2 oder 3 Spalten. Davon ist eine üblicherweise dem Inhalt vorbehalten und die eine oder zwei übrigen Spalten sind "Seitenleisten" (Sidebars).

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


Wordpress Widgets im Adminbereich

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


s9y Sidebar Plugins


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

Wordpress Widgets

Thursday, March 1. 2007
Defined tags for this entry: , , , , ,

Comments

Display comments as (Linear | Threaded)

No comments (Add Comment)

Trackbacks


No Trackbacks

Add Comment

BBCode format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA


Über

Das hier ist das private Weblog von Alp Uçkan. Ich entwickle Websites seit 1997 und arbeite derzeit als freiberuflicher Frontend-Entwickler in Berlin. Ich sammle außerdem noch Links in delicious und zwitschere vor mich hin.

Alp Uçkan ()
Gubitzstr. 20a
Berlin 10409 Germany
Jabber

Specialp Features

fapulous Framework (neu!)
Das erste XHTML/CSS-Framework auf Basis der Faux Absolute Positioning-Technik. Beinhaltet viele performante Konstrukte. Der Stoff, aus dem professionelle Websites gemacht sind ... ;-)

monitorThis 1.0
With MonitorThis you can subscribe to 26 different search engine feeds at the same time.

Business Blogging Weeks
Blog-Serie über die Kommerzialisierung der Blog-Szene in 2005

s9y Theme: adaptation
Ein leserfeundliches und sich der Monitorgröße anpassendes simples Theme für Serendipity.

Was ist FOAF?
Grundlagenartikel über FOAF. Auch einbindbar in die eigene Website.

Was ist RSS?
Grundlagenartikel über RSS. Auch einbindbar in die eigene Website.

neueste Leser-Kommentare:

12.03.2010 15:30
Also von javascriptbasierenden Spamschutz halte ich wenig. Dieser mag vielleicht Ema [...]
Usb... about Portable User
04.03.2010 20:30
Hi ^^ habe ne frage...und zwar habe ich ein anderes Problem und würde mich freuen we [...]
28.02.2010 17:37
sehr cooler artikel, ich finde hier immer wieder neue ideen, anregungen und wertvoll [...]