Support » Allgemeine Fragen » Javascript per URL ausführen, um Tabs direkt anzusteuern.

  • Hi,

    ich benutze das „Engo“-Theme. Das ist ganz cool – man kann auf Seiten und Posts Reiter-Ansichten erstellen. Beim Klick auf die Tabs wechseln die Inhalte. So weit so gut.
    Nun möchte ich aber einen spezifischen Tab direkt aus der URL ansteuern. Das klappt nicht. Da die Sache scheinbar mit Javascript gemacht wurde, muss ein entsprechender Befehl „Schalte auf Tab 3“ durch die URL ausgeführt werden.
    In irgendeinem PHP (wahrscheinlich in Shortcodes.php, das für die Tabs verantwortlich ist) muss wohl was rein wie „WENN die URL auf ‚?tabid=3‘ endet, DANN schalte auf Tab 3“

    Auf dieser Beispiel-Seite seht ihr, um was es geht: http://www.sfglab.bruggebrain.com

    Da ich leider keine Ahnung von PHP, Javascript und Co. habe wäre ich sehr froh, wenn ihr mir helfen könntet.

    Vielen Dank!
    Christoph

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Schau mal hier:
    http://sfglab.bruggebrain.com/wp-content/themes/engo/files/js/script.js?ver=1.0

    Da gibt es eine Sektion Tabs, die dafür zuständig ist.

    In Verbindung mit dem hier:
    http://wordpress.stackexchange.com/questions/41370/using-get-variables-in-the-url

    solltest Du in der Lage sein eine Lösung im Theme zu bauen.

    Gruß, Torsten

    Thread-Starter cBrugge

    (@cbrugge)

    Hi Torsten,

    danke für deine Hilfe. Ich wünschte, ich wäre jetzt tatsächlich in der Lage, die Lösung zu bauen.
    Ich verstehe, dass das von dir verlinkte Javascript eine Funktion definiert, die bei Klick einen Tabwechsel auslöst.
    Dann wird in deinem zweiten Link die Möglichkeit besprochen, mittels einer URL eine Funktion auszuführen.
    Das müsste ich noch irgendwie zusammenbekommen also: Löse die Funktion „Tabwechsel“ nicht nur bei Klick aus, sondern auch bei spezifischem URL-Anhang.

    Was müsste ich denn ganz konkret ins Javascript einfügen, damit beim Aufruf von http://sfglab.bruggebrain.com/?tab=3 der dritte Tab auf ist?

    Bitte verzeiht mir meine Ahnungslosigkeit!
    Danke und Gruß,
    Christoph

    Thread-Starter cBrugge

    (@cbrugge)

    Wirklich keiner da, der mir helfen kann? Schade.

    Ich habe das mal mit reinem Javascript umgesetzt:

    Hier der Fiddle:
    http://jsfiddle.net/veJ6B/7/

    Und hier im Einsatz mit TabID=3
    http://jsfiddle.net/veJ6B/7/show/?tabid=3

    Gruß, Torsten

    Thread-Starter cBrugge

    (@cbrugge)

    Woohoo, das ist genial! Herzlichen Dank!

    Ich kann nur staunend versuchen nachzuvollziehen, was da passiert. Scheinbar wird der URL-Parameter abgefragt, irgendwelche Slashs oder Backslashs ersetzt, und anschließend wird der URL-Parameter, sofern vorhanden in die iQuery-Funktion eingesetzt.
    Du merkst: Ich habe keine Ahnung!

    Jedenfalls Danke dir!
    Hab ein gutes Wochenende!

    Ich versuche es mal ein wenig zu dokumentieren.

    Das hier ist der Part aus dem Theme.

    Es löscht einfach bei einem Klick auf ein Element immer alle Vorkommnisse von der Klasse „active“ und setzt sie bei dem Element was angeklickt wurde.

    /*----------------------------------------------
    				        T A B S
    	------------------------------------------------*/
    jQuery(".tabs").each(function (i) {
        jQuery(this).find('.tab_content').removeClass('active');
        var rel = jQuery(this).find('.active').attr('href');
        jQuery(this).find('.' + rel).addClass('active');
    });
    
    jQuery(".tab_nav").on("click", "a", function () {
    
        var parentdiv = jQuery(this).parent('li').parent('ul').parent('div');
        var rel = jQuery(this).attr('href');
    
        jQuery(parentdiv).find(".tab_nav a").removeClass("active");
        jQuery(this).addClass("active");
    
        jQuery(parentdiv).find(".tab_container .tab_content").hide().removeClass('active');
        jQuery(parentdiv).find(".tab_container ." + rel).fadeIn(500).addClass('active');
    
        return (false);
    
    });

    Diese Funktion liest den URL-Parameter aus, der angegeben wird als Parameter der Funktion.

    function get_url_param(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    
        var regexS = "[\\?&]" + name + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
    
        if (results == null) return "";
        else return results[1];
    }

    Jetzt wird es spannend:

    Wenn überhaupt ein URL-Parameter vorhanden ist (ungleich leerer String):

    if (window.location.search != "") {

    Speichere den Inhalt des Parameters „tabid“ in der Variable „tabid“.

    var tabid = get_url_param('tabid');

    Entferne alle Vorkommnisse von der Klasse „active“ in der Navi.

    jQuery(".tab_nav a").removeClass("active");

    Und ergänze es wieder bei dem Link mit Klasse tabid gefolgt von der Zahl aus dem URL-Parameter.

    jQuery("[href='tabid" + tabid + "']").addClass("active");

    Und das gleiche nochmal für den Container mit dem Inhalt, aber den Inhalt dabei einblenden (500 Millisekunden Animation: FadeIn).

    jQuery(".tab_container .tab_content").hide().removeClass('active');
        jQuery(".tabid" + tabid).fadeIn(500).addClass('active');
    
    }

    Fertig!

    Gruß, Torsten

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Das Thema „Javascript per URL ausführen, um Tabs direkt anzusteuern.“ ist für neue Antworten geschlossen.