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

Defined tags for this entry: , , , , ,

Comments

Display comments as (Linear | Threaded)
  1. No comments

Add Comment


Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
BBCode format allowed
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





 

 

das Ç - logo von Alp Uçkan