26/12 WordPress 2.9 Dynamische Sidebars

Funktioniert auch in 2.9, 2.8 und 2.7 funktionieren

Ich habe in den letzten Tagen viel zu viel Zeit damit verbracht, im Internet zig unvollständige Tutorials über ‘mehrere Sidebars ‘ zu lesen und mir Infos zusammenzukratzen bis ich es schließlich schaffte. Ich bin nicht sehr bewandelt in PHP daher viel es mir sehr schwer. Und um anderen Nicht-PHP’lern diese Sucherei zu ersparen, wollte ich hier mal schlicht und einfach sagen was da genau zu tun ist.


Fangen wir gleich an:

Gehe in wordpress-root/wp-content/themes/deinTheme/

Öffne functions.php

Suche nach:

if ( function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '
	<li id="%1$s" class="widget %2$s">',
'after_widget' =&gt; '</li>
',
'before_title' =&gt; '
<h2 class="widgettitle">',
'after_title' =&gt; '</h2>
',
));;

Und ersetze mit:

if ( function_exists('register_sidebar') )
    register_sidebar(array('name'=&gt;'sidebar1',
        'before_widget' =&gt;; '
	<li id="%1$s" class="widget %2$s">',
        'after_widget' =&gt; '</li>
',
        'before_title' =&gt; '
<h2 class="widgettitle">',
        'after_title' =&gt; '</h2>
',
    ));

Damit hast du nun der bestehenden Sidebar einen Namen verpasst um sie von anderen Unterscheiden zu können. Der Name ist sidebar1 .

Um eine zweite anzulegen füge darunter einfach folgendes ein:

register_sidebar(array('name'=&gt;;'sidebar2',
        'before_widget' =&gt; '
	<li id="%1$s" class="widget %2$s">',
        'after_widget' =&gt; '</li>
',
        'before_title' =&gt; '
<h2 class="widgettitle">',
        'after_title' =&gt;; '</h2>
',
    ));

Damit hast du nun 2 Sidebars angelegt. Eine mit dem Titel sidebar1 und eine mit sidebar2 als Titel.
Das kannst du beliebig oft machen, nur vergiss nicht überall verschiedene Namen zu verwenden

Im Backend (Administrationsbereich) von WordPress kannst du jetzt schon unter “Darstellung” -> “Widgets” rechts oben, zwischen den beiden Sidebars wechseln und verschiedene Widgets einfach durch drag-and-drop hinzufügen.

Jetzt erstellst du eine weitere Datei in deinem Theme Ordner. Der Name ist völlig egal aber wir nehmen hier mal ‘sidebar2.php’

In diese trägst du mindestens ein:

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar2') ) : ?>

Das bindet ihr am besten in ein div-Tag ein mit der id=’sidebar’.
Ich habe da einfach den Code aus der sidebar.php rüberkopiert, und den obigen Parameter eingefügt.
Dann geht ihr in die vorhandene sidebar.php und tragt dort wie oben bei dynamic_sidebar den Parameter ‘sidebar1′ ein. Damit wissen nun eure sidebar-php-Dateien, dass sie die Widgets die ihr ihnen im Adminbereich zugeordnet habt, da einfügen sollen. (Sozusagen) ;-)

Und jetzt müsst ihr eure Sidebars nur noch ins Theme einbinden. Das macht ihr so:

Öffne die Index.php und die Page.php und jede andre Datei wo die Sidebar erscheinen soll.

Dann suchst du nach

<?php get_sidebar(); ?>

und fügst z.B. darunter

<?phpinclude (TEMPLATEPATH . '/sidebar2.php');?>

ein.

Wenn ihr das gemacht habt, erscheinen die beiden Sidebars nebeneinander oder übereinander je nachdem wie ihr die div-container anordnet oder die CSS-klasse ‘sidebar’ definiert.
Um die 2te Sidebar anders als die erste aussehen zu lassen, änderst du im div-tag der sidebar2.php einfach die ID. z.B: div id=’sidebar2′
Dann müsst ihr aber noch die klasse sidebar2 in eurer style.css anlegen.

Ihr könnt auch variiren was das anzeigen und so weiter betrifft.
Ich habe Tabs als Sidebar und dass wenn eine bestimmte Seite (z.B: Impressum) aufgerufen wird, eine bestimmte Sidebar angezeigt werden soll. Das geht mit ner einfachen if-Bedingung

<?php
if(is_page('Impressum'))
		 {
		 include (TEMPLATEPATH . '/sidebar2.php');
		 }
		else
		 {
		 get_sidebar();
		 }
?>

Das heißt dann: Wenn die Page/Seite Impressum heißt, dann zeige die Sidebar2, wenn nicht, zeige die Sidebar1.

is_page könnt ihr auch ersetzen oder die if-Bedingung erweitern oder was ihr sonst wollt.
Weitere Tags findet ihr hier

Viel Spaß damit!

Am 26.12.2008 in Das Kreative, Tutorials veröffentlicht. Bisher 5 Kommentare

  1. Sehr verständlich erklärt. Eine große Hilfe! Danke.

    AntwortenAntworten
    • Papa_K
    • 11. Jun. 2009

    gut erklärt, ich denke das wird mir weiterhelfen, besten Dank !

    AntwortenAntworten
    • TAOD
    • 22. Jun. 2009

    Hallo und besten Dank für Dein Tut!

    Hätte da diesbezüglich eine Frage:
    Besteht ggf. auch die Möglichkeit (ähnlich wie am Beispiel vom Impressum) beim Einsatz von 2 Sidebars eine zu einer bestimmten Seite auszublenden sobald diese aufgerufen wird und an Sonsten vorhanden bleibt, wenn man in die restlichen Angebote wechselt?

    Habe die Hoffnung, dass so die Möglichkeit besteht, beim Einsatz vom Simple-Press Board dieses etwas breiter darstellen zu können!

    Also mit einfachen Worten, zeige grundsätzlich beide Sitebars ausser wenn das Board aufgerufen wird, dann zeige nur Sidebar 2!

    Bin leider kein Coder und würde mich echt über einen Tipp freuen!

    Beste Grüße, TAOD

    AntwortenAntworten
    • Sumit
    • 22. Jun. 2009

    leider bin ich mir nicht sicher was genau is_page checkt. Wenns die URL ist sollte es leicht gehen, wenns was WP-Internes ist muss ich nochmal überlegen.
    Ich hab simple-Press noch nicht benutzt, aber wie wird dass denn aufgerufen?

    du könntest es mal mit

    if(is_page(‘forum-adresse-url’))
    {
    include (TEMPLATEPATH . ‘/sidebar2.php’);
    }
    else
    {
    include (TEMPLATEPATH . ‘/sidebar1.php’);
    include (TEMPLATEPATH . ‘/sidebar2.php’);
    }

    probieren
    (in php tags)

    Wenn das nicht funktioniert, dann kannst du das Forum wohl nicht durch is_page ansprechen.

    Es geht hauptsächlich darum, wie simplePress eingebunden ist. Ideal wäre wenns per WP-Page & entsprechendes Template eingebunden wird.

    Sag bescheid dann gugg ich nochmal nach

    Gruß

    AntwortenAntworten
    • Sumit
    • 22. Jun. 2009

    ok ich hab grad bei denen im Forum rumgeschaut. Anscheinend wird das ja per WP-Page eingebunden. Da hast du ja einen “Slug” (Permalink) mit dem du das Forum aufrufst. Nimm den COde den ich dir ein Kommentar drüber geschrieben habe und ersetze:

    - forum-adresse-url mit dem Titel oder der letzte teil der Adresse vom Forum.
    Bsp.: http://www.deineseite/forum – dann trägst du da ‘forum’ ein.

    - sidebar1.php und sidebar2.php mit den Namen deiner Sidebars

    Sag bescheid obs geht.

    Gruß

    AntwortenAntworten
  1. Noch keine TrackBacks.