Iromeisters Abenteuerreise

Von einem, der auszog, Vertrauen zu üben

Das Gesetz des Karma ist aufgehoben. Alle Wesen sind frei.
« Neues von der Backup-Front: restic Liebe CIA, ich habe gerade 1000 € an die Wau-Holland-Stiftung gespendet »

Sidebar auf der rechten Seite mit Divi 4

2020-01-12

Ich bin mir echt nicht sicher, ob ich diesen Hack hier gerne veröffentliche – angesichts dessen, dass vermutlich viele das gleiche Problem haben werden, tue ich es dennoch.
Jedenfalls läuft ja die Diamond Lotus-Website unter Wordpress (was ich mir so nicht ausgesucht hätte) mit dem Theme Divi von Elegant Themes. Auch das hätte ich mir nicht ausgesucht, weil es zwar einfach zu bedienen ist, aber erwartungsgemäß stark aufgeblähten HTML- und CSS-Code produziert.

Nun ist es so wie es ist, wir benutzen das & haben letzten März auch ein Blog auf unserer Seite gestartet. Damit dessen Beiträge sowie das Archiv auf jeder Seite verfügbar ist, habe ich eine Sidebar mit den entsprechenden Widgets eingerichtet. Damit diese nun auch tatsächlich auf allen Seiten (außer denen, wo es anders eingestellt ist) in einer rechten Spalte angezeigt wird, musste ich auf einen Hack von Sudari Webdesign zurückgreifen.

Der funktionierte wunderbar – bis zum Upgrade auf Divi 4. Durch den wurden die Inhalte der Sidebar nicht mehr an der Seite, sondern ganz unten am Ende der Seite angezeigt.

Es hat mich erst mal eine intensive Suche gekostet, um herauszufinden was sich da beim Upgrade verändert hat: Das body-Tag bekommt, obwohl ich im Backend et_right_sidebar ausgewählt habe, die CSS-Klasse et_no_sidebar zugewiesen. Diese bewirkt genau das, was ich oben beschrieben habe: die "Side"bar wird unten angehängt.

Nachdem ich das herausgefunden hatte, stellte sich die nächste Frage: An welcher Stelle kann ich das ändern? Dabei habe ich den Wordpress-Hook body_class kennen gelernt, der mir entscheidend weitergeholfen hat.

Das Problem löst sich folglich, indem ich diesen Code in die functions.php des Child Themes einfüge:

  
add_filter( 'body_class', function( $classes ) {
    foreach($classes as $key => $class) {
        if( $class == 'et_no_sidebar' ){
            $classes[$key]='et_right_sidebar';
        }
    }
    return $classes;
}, 1000);
  

Parallel dazu habe ich aber mal den Elegant Themes-Support angeschrieben, es handelt sich dabei nämlich offensichtlich um einen neuen Bug. Bei meinen Versuchen habe ich nachgeprüft, dass die Variable _et_pb_page_layout nämlich sehr wohl den Wert et_right_sidebar hat. Damit sollte die CSS-Klasse eigentlich übereinstimmen.

Nachtrag vom 14.01.: Der Support war bisher wenig hilfreich, hat erst mal Drittanbieter-Plugins als Ursache verdächtigt…

1 Response to Sidebar auf der rechten Seite mit Divi 4

Feed for this Entry

1 Kommentare

  • hi und vielen dank für den code. das hat geklappt und ich kann alles nur bestätigen. ich habe noch eine abfrage hinzugefügt, die die et_right_sidebar auch nur setzt, wenn das layout wirklich auch ein et_right_sidebar ist und nicht immer:

    // overwrites wrong divi no sidebar body class
    $divi_page_layout = get_post_meta(get_the_ID(), '_et_pb_page_layout', true);
    if($divi_page_layout == "et_right_sidebar") {
    foreach ($classes as $key => $class) {
    if ($class == 'et_no_sidebar') {
    $classes[$key] = $divi_page_layout;
    }
    }
    }

    return $classes;

    #2163 | Comment by ag am Mär 27, 2020 05:58pm

Über dich

E-Mail-Adresse ist nicht veröffentlicht

Zur Diskussion hinzufügen

Schenken

Spenden

Suchen

Archiv

Browse Archives