widgets bei theme switch übernehmen

  • Hallo da draußen,

    ich bastele gerade ein eigenes theme für meinen Blog und habe das Theme Switch Plugin im Sidebar eingebaut.

    Wenn man anhand des Theme Switch Menüs ein anderes Theme wählt, dann werden die Widgets immer auch (in jeweils neuem Design) angezeigt, außer bei meinem eigenen Theme. (Ausgerechnet! :evil:)

    Auf den ersten Blick ist meine sidebar.php aber nicht sonderlich verschieden von den entsprechenden Dateien der anderen Themes... oder irre ich mich da?

    Der Link zum Blog: http://grapholution.net

    (Mein eigenes Theme findet ihr unter der Option "Design auswählen" im Sidebar, wenn ihr dort "bleib-passiv" auswählt)

    p.s.: Auch die Plugins sind davon betroffen, wie ich gerade sehe. Zumindest die, die nicht im Loop eingebaut sind.

    Einmal editiert, zuletzt von Romanowitsch (25. Juni 2010 um 18:16)

    • 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

  • Hast Du denn überhaupt in der sidebar.php einen Wdget-Bereich eingebunden, und falls er benannt ist, ist er in alle anderen Themes auch so benannt? Wenn Du z.B. in Deinem Theme einen Widget-Bereich mit Namen eingebaut hast und die anderen Themes das unbenannt machen, könnte das denke ich die Ursache sein.

  • Das ist ja gerade das Komische:

    Ich habe als Grundlage für meinen Sidebar einfach die sidebar.php eines anderen funktionierenden Themes genommen. Aber irgendwie funzt es nicht.

    Die anderen themes scheinen in ihren sidebar-Dateien auch unterschiedlich Namen für die Widgets zu verwenden. Bei mir steht zur Zeit "xWidget".

    Aber müsste es nicht eigentlich unabhängig von der Bezeichnung sein? Ich hätte gedacht, es gibt einfach irgendeinen dynamischen PHP-Befehl, den man in die sidebar.php übernimmt, damit die Widgets angezeigt werden... ?

  • Tja, dann zeig uns doch am besten mal den Code Deiner sidebar.php und sag uns, ob das Default-Theme zu den Themes gehört, die funktionieren. Vielleicht sieht man es ja dann.

  • Also, noch kurz vorab:
    Das Default Theme sieht zwar bei mir gerade ein bisschen zerschossen aus (habe ich daran irgendwas verändert... :neutral: Uhh, kann schon sein.), aber es zeigt (ganz unten im Sidebar) schön brav die Widgets an. (Und darum geht's mir ja erstmal nur.)

    Die sidebar.php, die ich für mein selbstgebautes Theme benutze (siehe dazu meine Test-Blog-Seite und dann am rechten Rand unter "Design auswählen" den Theme "bleib-passiv" anklicken) habe ich aus dem "jarrah"-Theme herauskopiert (ebenfalls dort auswählbar unter dem Sidebar-Widget "Design auswählen") und natürlich noch verändert. Aber den Teil mit den Widgets habe ich im großen und ganzen so gelassen. (Nur den "Meta"-Bereich - mit "Einloggen" usw. - habe ich rausgelöscht.)

    Meine sidebar.php sieht wie folgt aus:


    Einmal editiert, zuletzt von Romanowitsch (28. Juni 2010 um 11:00)

  • Deine Sidebar wird mit dem Namen/Key "right" eingebunden. Als Du die Widgets konfiguriert hattest, war aber wohl ein andere Theme aktiv, also hast Du sie für eine andere Sidebar konfiguriert. In die Sidebar namens "right" dagegen sind keine Widgets gelegt, also siehst Du auch keine.

    Du kannst jetzt entweder das Theme aktivieren und "right" noch befüllen. Oder, was vermtulich praktischer ist, Du änderst das Theme so, dass es den gleichen Namen/Key benutzt wie die anderen Themes, was ggf. gar keiner ist. Ich bin aber nicht sicher, was die Funktion macht, wenn kein Name angegeben ist, man aber mehrere Sidebars hat. Musst Du ggf. mal ausprobieren (am besten an einer Testinstallation).

  • Hmm... ich hab's entweder nicht richtig verstanden oder einfach nicht hinbekommen.

    Hat dieser "Name/Key", den Du meinst, etwas mit diesem PHP-Befehl

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

    zu tun?

    Ich habe das dort enthaltene

    PHP
    'sidebar_right'

    schon durch

    PHP
    'right'

    ersetzt sowie einfach rausgelöscht (also die Klammer leer gelassen), aber in keinem der Fälle hat sich etwas geändert :cry:

    Was meintest Du denn mit diesem "Key" von der sidebar? Und wo könnte ich den ändern?

  • Hier mal die Doku zur dynamic_sidebar-Funktion:
    http://codex.wordpress.org/Function_Reference/dynamic_sidebar

    Wenn Du die Sidebar/den Widget-Bereich registrierst, kannst Du ihm einen Namen geben, der dann so in dynamic_sidebar() reingereicht wird. Die meisten Themes machen das nicht, also wäre da leer lassen richtig. Das geht aber nur, wenn Du gleichzeitig die Registrierung der Sidebar in der functions.php so änderst, dass die Sidebar nicht mehr mit "right" oder gar "sidebar_right" registriert wird. Nur eins von beidem ändern geht nicht.

  • Vielen Dank, Ammaletu! :grin:

    Genau das war es! Jetzt werden die Widgets angezeigt.
    Nochmal vielen Dank für Deine ausdauernde Hilfe!!!

    Beste Grüße,

    Romanowitsch

  • P.S.: Für alle, die diesen Thread lesen und das trotzdem nicht nachvollziehen können, hier mal die genauere Problemanalyse und -lösung.

    Ich hatte in meinem Wordpress-Ordner eine sidebar.php angelegt, wo die erwähnte dynamic_sidebar-Funktion enthalten war (mit deren Hilfe sich die Widgets, die im Admin-Bereich in den Sidebar gelegt wurden, dynamisch (also sofern vorhanden und mit den Einstellungen, die im Backend vorgenommen wurden) aufrufen lassen).

    Der Befehl zum dynamischen Sidebar-Aufruf lautet:

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

    Das Problem: Die Widgets wurden aber wider Erwarten nicht im Sidebar angezeigt.

    Also habe ich jetzt eine weitere Datei ("function.php") im Wordpress Ordner angelegt (bzw. aus einem anderen Theme herauskopiert, der einigermaßen ähnlich ist - aber nicht sein muss) .

    In dieser function.php-Datei steht nun unter anderem:

    Und jetzt wird auch alles brav angezeigt :-D

    Einmal editiert, zuletzt von Romanowitsch (30. Juni 2010 um 14:32)

  • Und der Name stört nicht beim Theme-Switch? Ah, ok, Du hast nur eine Sidebar, oder? Wenn Du jetzt noch eine 'sidebar_left' definieren würdest, und zwar an erster Stelle, dann würde ich erwarten, dass beim Switch auf ein Theme mit nur einer Sidebar dann 'sidebar_left' angezeigt würde, da wo bei Dir 'sidebar_right' hingehört. Aber mit nur einer Sidebar passt das vermutlich automatisch.

  • Ah, ok, Du hast nur eine Sidebar, oder?

    Jo, das hätte ich wohl noch hinzufügen müssen :wink:

    Aber mit nur einer Sidebar passt das vermutlich automatisch.

    Jepp, so scheint es zu sein.

    Ich habe übrigens immer noch das Problem, das die Plug-ins nicht übernommen werden. (Ich verwende unter anderem ein Back-to-top- und das Fixed-Social-Buttons-Plug-in.)
    Die werden in dem Theme, der gleich als erstes erscheint, wenn man auf grapholution.net geht, angezeigt, aber beim Switch auf das von mir gestaltete "bleib-passiv" Theme nicht mehr...

    Muss auch hier irgendwas in die function.php rein?

  • Wenn die Plugins automatisch Dinge in das Theme einfügen sind sie auf Hooks wie wp_head und wp_footer angewiesen. Kannst Du Dir im Default-Theme abschauen, wie das auszusehen hat. Wenn das bei Dir fehlt, können die Plugins nichts einfügen.

  • Hmm, eigentlich halte ich mich ja für nicht so begriffstutzig, aber nach langem abgrasen der php-Datein des default-theme bin ich irgendwie weder fündig noch klüger geworden...

    Wo finde ich diese Hooks?

  • Im Default-Theme 2.9.2 sieht das in der header.php so aus (noch im head-Bereich):

    PHP
    <?php wp_head(); ?>

    Und in der footer.php:

    PHP
    <?php wp_footer(); ?>

    In TwentyTen habe ich noch nicht geschaut, müsste dort aber eigentlich analog sein.

Jetzt mitmachen!

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