Lesefortschritt:

    Divi-Toggles (oder -Umschalter) mit Anker-Link direkt ansteuern und öffnen

    8. November 2026 | Divi-Theme, functions.php, Scripts

    Trick # 629 | Dieser Beitrag beinhaltet 0 Wörter. – Geschätzte Lesezeit: ca. 0 Minuten.

    Das Divi-Theme verfügt über ein interessantes Umschalter-Modul – in der englischen Version: Toggle. Damit lassen sich Texte und Informationen zunächst kaschieren; User klicken auf den Toggle und erfahren mehr. Wenn man diese Toggles jedoch mit einem Anker-Link direkt zu öffnen versucht, geben sie sich störisch. Wir haben einen Weg gefunden, wie es dennoch funktioniert.

    Zunbächst vergeben Sie dem Umschalter-Modul eine eindeutige CSS-ID. In unserem Beispiel nennen wir diese showcase. Fügen Sie diesen (oder natürlich jeden anderen) ID-Namen im Toggle-Modul ein. Und zwar im bearbeiteten Modul unter «Erweitert», «CSS-ID und Klassen» in das Textfeld «CSS-ID».

    Nun benötigen Sie noch einen JavaScript-Code. Den folgenden Block kopieren Sie in den -Bereich Ihrer Website. Das geht im Word­Press-Backend ganz einfach unter Divi/Theme-Optionen/Integration:

    <script>
    document.addEventListener('DOMContentLoaded', function () {
        const hash = window.location.hash; // Holt den Ankerlink (z. B. #toggle1)
        if (hash) {
            const toggleElement = document.querySelector(hash); // Sucht das Ziel-Element mit der ID
            if (toggleElement && toggleElement.classList.contains('et_pb_toggle')) {
                // Öffnet das Toggle-Modul, falls es geschlossen ist
                if (!toggleElement.classList.contains('et_pb_toggle_open')) {
                    const title = toggleElement.querySelector('.et_pb_toggle_title');
                    if (title) {
                        title.click(); // Simuliert einen Klick, um das Modul zu öffnen
                    }
                }
                // Scrollt zum geöffneten Toggle-Modul
                toggleElement.scrollIntoView({ behavior: 'smooth' });
            }
        }
    });
    </script>

    Das war's schon. Probieren wir es aus:

    Rechts sehen Sie nun zwei Toggles. Eines, welches auf Anker reagieren wird und eins, das keine CSS-ID hat und sich darum nicht ansprechen lässt.

    Normales Toggle-Modul

    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

    Toggle-Modul mit ID

    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

    Da unser Beispiel-Toggle die ID «showcase» hat, können wir es nun mit folgendem Link direkt ansteuern und öffnen: https://dr-code.ch/divi-toggles-oder-umschalter-mit-anker-link-direkt-ansteuern-und-oeffnen/#showcase.

    Probieren Sie's aus. Praktisch. Oder?

    Optional: Script nur punktuell einbinden

    Einen Haken haben jedoch Scripts, die im <head>-Bereich geladen werden: Sie sind immer verfügbar. Ganz egal, ob sie auf einer Seite verwendet werden oder nicht. Wir haben darum begonnen, unsere Scripts nur noch bei Bedarf einzubinden.

    Im vorliegenden Fall (mit den Toggle-Modulen) geht das ganz einfach mit folgendem PHP-Code, den Sie NICHT ZUSÄTZLICH zu obigem, sondern an dessen Stelle verwenden können.

    Er landet in Ihrer Datei functions.php, welche Sie im Backend unter Design/Theme-Datei-Editor finden:

    function custom_toggle_script() {
        // Überprüfen, ob ein Divi-Toggle-Modul im Content vorhanden ist
        if (has_divi_toggle()) {
            // Das Inline-JavaScript hinzufügen
            wp_register_script('custom-toggle-inline', '', [], '', true); // Leeres Handle für das Inline-Script
            wp_enqueue_script('custom-toggle-inline'); // Script einreihen, ohne eine Datei zu laden
    
            // Das Inline-JavaScript in den Footer einfügen
            wp_add_inline_script('custom-toggle-inline', '
                (function ($) {
                    $(document).ready(function () {
                        // Hier fügen wir ein Klick-Event auf alle Elemente mit einer Toggle-ID hinzu
                        $("a[href^=\"#\"]").on("click", function () {
                            var link = $(this).prop("hash");
                            
                            // Überprüfen, ob das angeklickte Element tatsächlich ein Toggle ist
                            if ($(link).hasClass("et_pb_toggle_close") || $(link).hasClass("et_pb_toggle_open")) {
                                $(link).removeClass("et_pb_toggle_close").addClass("et_pb_toggle_open");
                                $(link + " .et_pb_toggle_content").css("display", "block");
                            }
                        });
                    });
                })(jQuery);
            ');
        }
    }
    add_action('wp_enqueue_scripts', 'custom_toggle_script');
    
    // Funktion, die prüft, ob ein Divi-Toggle im Content vorhanden ist
    function has_divi_toggle() {
        global $post;
        // Überprüfen, ob der Inhalt des Posts ein Divi-Toggle enthält
        if (strpos($post->post_content, 'et_pb_toggle') !== false) {
            return true;
        }
        return false;
    }

    Zur Funktionsweise: Der Code prüft während des Ladens einer Seite, ob Toggle-Module enthalten sind. Ist dies der Fall, wird das Script zugeschaltet – in allen anderen Fällen ist es deaktiviert.

    Werbung

    Keine Inhalte gefunden.

    Werbung

     

    Pin It on Pinterest

    Share This
    Überblick über den Datenschutz

    Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.