Zwei verschiedene Sidebars

  • Hi..

    ich möchte in meinem Blog für die Page.php eine andere Sidebar haben als für den Rest.

    Wie mache ich das ? Wo muss ich da was ändern ?

    Ich habe versucht das in

    <?php get_sidebar(); ?> in <?php get_sidebar1(); ?>

    zu ändern. Und auch eine sidebar1.php habe ich angelegt. Aber es klappt nicht.

    Was muss ich machen ?

    Gruss
    andi

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • wat?

    Tag auch

    also alle themen bezüglich 2ter Sidebar hier im forum sind etwas verwirrend... aber ich konnte mir jetzt zumindest ein paar infos zusammen kratzen.

    Soweit bin ich:

    Ich erstelle neben der sidebar.php z.B: die sidebar-foto.php
    Dann geh ich dahin wo sie aufgerufen werden soll (page.php, single.php, index.php). In meinem Fall Page.php da die Seite in der die zweite Sidebar anstelle der Standard-Sidebar angezeigt werden soll eine Seite ist (und kein Artikel). Und ändere

    PHP
    <?php  get_sidebar();  ?>

    in

    PHP
    <?php  if ( is_page('Fotos')) { get_sidebar('foto'); } 
    else { get_sidebar(); } ?>


    Soweit so gut. Nur: wie kann ich denn meinem Backend sagen, dass es nun ne 2te Sidebar gibt? Weil in diesem kann ich immernoch nur "Seitenleiste1" auswählen um Widgets hinzuzufügen.

    Oder ist es doch nicht so einfach und ich muss da in der functions.php rumwurschteln?
    Freue mich über jede Hilfe!

    lg

    Sumit

    EDIT: Sidebar.php und Sidebar-foto.php haben derzeit identischen Quellcode

    Einmal editiert, zuletzt von Sumit (23. Dezember 2008 um 18:09)

  • Nur: wie kann ich denn meinem Backend sagen, dass es nun ne 2te Sidebar gibt? Weil in diesem kann ich immernoch nur "Seitenleiste1" auswählen um Widgets hinzuzufügen.

    Oder ist es doch nicht so einfach und ich muss da in der functions.php rumwurschteln?


    Etwas, ja. Schau mal hier rein:
    Wie kann ich mein Theme Widget-fähig machen? « WordPress Deutschland FAQ

    Da gibts auch nen Abschnitt zu 2 oder mehr dynamischen Sidebars.

  • danke!, ja das hatte ich (auf ner englishen seite) auch schon gefunden, aber:

    PHP
    <?php
    if ( function_exists('register_sidebar') )
    register_sidebars(3);
    ?>

    is klar! 3 Sidebars werden "registriert"

    So aber in meiner function.php steht der Code damit man da mit CSS rumhantieren kann:

    PHP
    if ( function_exists('register_sidebar') )
    register_sidebar(array(
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget' => '</div>',
    'before_title' => '<div class="title">',
    'after_title' => '</div>',
    ));

    Da ist also statt der 3 ein array drin.
    Wo wird jetzt bei 2tem Code angegeben, wieviele Sidebars ich registrieren möchte?

    Vorallem steht in dem post "Wie kann ich mein Theme Widget fähig machen":

    Zitat

    Ist deine Sidebar keine verschachtelte Liste, oder möchtest du den generierten HTML-Code aus anderen Gründen beeinflussen, dann kannst du den obigen Code wie folgt erweitern:

    Nur ist die "3" aus "obigem Code" unten nicht wieder vorgekommen! Das ist das einzige was ich immo nicht verstehe

    lg

    Einmal editiert, zuletzt von Sumit (24. Dezember 2008 um 14:06)

  • äh..nein?

    :D ich glaub ich werd hier total bescheuert.. ich habe jetzt sage und schreibe 11 "Tutorials" zu diesem Thema durchgelesen. Mal wirds so gemacht, mal so, mal fehlt hier bissle was und mal da... ich bekomms einfach nicht gebacken.
    Auch wenn ich wert auf verständnis lege, bitte! ich schildere dir/euch jetzt nochmal alles was ich gemacht habe. Und dann möchte ich bitte bitte nur noch erfahren, wo welcher Code falsch ist und was stattdessen hinmuss. Bitte!:

    Ziel: Pages (page.php) sollen ne andre Sidebar haben wie Posts (index/single.php)

    functions.php

    statt

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

    habe ich:

    Ich weiß! Da gibts auch andere Möglichkeiten wie ich gelesen habe (mit parameter bei register_sidebarS() und so. Dieses "s" wird übrigens in den tuts sehr häufig mal weggelassen und mal ists da. Versteh ich auch nicht so ganz)

    Jetzt gibts in meinem Backend -> Darstellung -> Widgets die "Sidebar1" und "Sidebar2" zum auswählen.

    Ich lege nun sidebar2.php an und bennene sidebar.php um in sidebar1.php

    sidebar1.php

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

    HIer wusste ich auch nicht ob da als Parameter nun in Anführungszeichen schreibt oder nicht, oder ob nur ne 1 reinkommt oder garnix oder wie oder was.

    In sidebar2.php steht das gleiche, nur mit 'sidebar2' als Parameter!

    So, bis hier steht in der Page.php: <?php get_sidebar('sidebar1'); ?>

    Und das funktioniert. Die Sidebar1 wird angezeigt. Aber:

    page.php

    statt

    PHP
    <?php get_sidebar(); ?>
    
    
    bzw
    
    
    <?php get_sidebar('sidebar1'); ?>

    schreibe ich

    PHP
    <?php get_sidebar('sidebar2'); ?>

    auch hier: Anführungszeichen? Einfach nur ne 2? Andres? Oder sogar:

    PHP
    <?php include("sidebar2.php"); ?>


    ?

    Habs mit und ohne anführungszeichen probiert. Es wird immer, egal welche von diesen möglichkeiten ich nehme, die Sidebar 1 angezeigt. Außer beim Inlcude, da kommt dann garnichts :-/

    Bitte bitte bitte..! Ich werd irre
    Wenn ich das dann mal hinkriege, dann werd ich sofort n ausführliches deutsches Tutorial für nicht-php'ler schreiben!

    weinachtliche Grüße!

    Sumit

    Einmal editiert, zuletzt von Sumit (25. Dezember 2008 um 04:23)

  • Done!

    Ok ich habs geschafft...

    genau so wie oben beschrieben nur anstatt die oberen befehle zum einbinden der zweiten sidebar, habe ich

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

    Das funktioniert. Die Parameter immer mit Anführungszeichen (string und so is klar ne). Werd das dann mal ausführlich beschreiben weil es sicherlich leute gibt die diesselben probleme haben wie ich.

    lg und vielen dank für die hilfe!

    Sumit

    Einmal editiert, zuletzt von Sumit (25. Dezember 2008 um 13:08)

  • Das hier scheint die beste Lösung zu sein, wenn man verschiedene Sidebars auf den Seiten haben will.

    Ich bin kein php Kenner, daher habe ich hierzu noch eine Frage.
    Wenn ich jetzt zwischen 5 oder mehr Sidebars unterscheiden möchte, wie löse ich das? Bisher habe ich folgendes ausprobiert:

    PHP
    <?php  if ( is_page('Fotos')) { get_sidebar('foto'); } 
    if ( is_page('Videos')) { get_sidebar('video'); } 
    else { get_sidebar(); } ?>

    nun erscheint auf der Seite Fotos uner der Fotosidebar auch die normale Sidebar. Je mehr Sidebars ich hinzufüge, immer nur die letzte Seite in der Liste hat nur die richtige Sidebar. Alle anderen sind doppelt.

    Kriegt man sowas in den Griff?

    Vielen Dank

    steinchen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!