Zum Inhalt springen

rgtabs von link auf eine bestimmten Tab springen

Erstellt am 4. April 2008 · 7 Antworten · letzte Antwort am 30. Mai 2012

Tags: Frage

tom_meier ·

Hallo,

habe die Ext, rgtabs installiert und läuft alles super. Nun möchte ich aber von der Startseite einen link in das z.b 2 tab setzen. Es wird mir aber immer das 1. Tab angezeigt. Auch wenn ich dem Link die ID des Ankers mitgebe (id=4#c111) geht es nicht. Es wird immer Tab 1 angezeigt.

Weiss jemand wie das gehen soll?

Gruß

Tom

just2b ·

Hallo,

ist der anker auch im quellcode, ists auch der anker von diesem tab? dann müsste eigentlich alles passen, bei mir gehts

georg

tom_meier ·

Hallo Georg,

ja ist ein Anker vom 2. Tab. Ich muss aber sagen das ich nicht mit Ajax Arbeite. Geht es auch in der JS Version?. (Suchmaschinentechisch)

Das Tab muss ja dann per JS "eingeblendet" werden.

Gruss Tom

elv1s ·

Hallo!

ich habe das Problem das im Quelltext kein Anker bzw. a id= erscheint.

Die Tabname werden alle nur mit H4 gewrapped und kein <a id = > wird erstellt.

Ich benutzt Rgtabs ohne Ajax funktion.

Wer hat ne Id wo ich evtl . was vergessen habe oder ändern sollte.

vielen Dank im Voraus.
Gruss

Graf Typo ·

Liebe Community,

auch ich war auf der Suche nach einer Lösung für diese Frage. Hier las ich etwas von Anker-IDs, woanders von einer TYPOScript-Alternative mit LinkVar, aber nix davon hat für mich funktioniert. Daher habe ich eine kleine JavaScript-Lösung geschrieben, die ich hier gerne teilen möchte.

Zunächst einmal kopieren wir die originale Datei rgtabs.js aus typo3conf/ext/rgtabs/res/scripts in ein eigenes Verzeichnis (zum Beispiel fileadmin/scripts), um sie dort update-sicher bearbeiten zu können.

Im TS Setup des Root-Verzeichnisses oder wahlweise eines erweiterten Templates geben wir dann den neuen Pfad an, damit die Extension auch das richtige JavaScript findet:

plugin.tx_rgtabs_pi1.pathToJS = fileadmin/script/rgtabs.js

Nun aber zum JavaScript selbst. In der kopierten Datei setzen wir ganz an den Anfang folgenden Code (hab's hier mal als TS formatiert, weil alles andere falsch dargestellt wird; ist aber JS):

/**
*
* URL nach tab=... durchsuchen und entsprechende Tabauswahl vorbereiten
* (Die tatsächliche Auswahl erfolgt weiter unten über 'options: show')
*
*/

function gup(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];
}

var showTab = gup('tab');
showTab = (showTab == "")?0:showTab-1;

Etwas weiter unten finden wir die Zeile

show: 0;

und ändern sie in

show: showTab;

Das war's! Wenn man nun an die URL der Seite ein &tab=2 anhängt (bzw. bei RealURL ein ?tab=2), wird nun zum Beispiel der zweite Tab aufgerufen. Also zum Beispiel: http://www.yourdomain.com/index.php?id=myalias&tab=2

Einige Anmerkungen:

* Die Funktion gup zum Durchsuchen der URL nach Parametern ist ausgeliehen von dieser Seite. Danke an Justin Barlow.
* Wer seinen Parameter nich tab nennen will, sondern vielleicht hanswurst, ändert das tab einfach in dieser Zeile des Javascripts:

var showTab = gup('tab');

* Die Anker-ID-Lösung, die in diesem Thread vorgeschlagen wird, ist "unobtrusive", funktioniert (wenn sie mal funktioniert ...) also auch ohne eingeschaltetes JavaScript. Meine Lösung braucht dagegen ganz offensichtlich JavaScript.
* Der anzuwählende Tab kann trotzdem im Backend-Formular überschrieben werden (Feld Start mit Tab #).
* Getestet nur mit der Basic-Tabs-Variante von rgtabs, nicht mit Ajax.
* Falls Georg Ringer dies liest, darf er gerne diese Lösung in einem Update von rgtabs verwenden.

Lasst mich doch wissen, ob alles bei euch funktioniert oder ob ihr einen Bug findet.

Einen schönen Tag noch,
der Graf

coyot ·

Hallo Community,

ich habe mich letztens mit dem Problem rumgeschlagen, dass ich so etwas brauchte aber auch rgtabs in rgtabs hatte. Also 2 Stufen. Und mit realurl.
Tutorials im Netz waren da nicht sehr hilfreich (und das von Graf, das als Basis dienen sollte, wurde von BBCode zerschossen...), also habe ich meine eigene Lösung gebastelt und wollte die mal mit Euch teilen.

Erstmal, wie schon Graf geschrieben hat, die JS Datei kopieren und im TS auf sie verweisen.
Dann folgende Änderungen vornehmen:
Ganz am Anfang der Datei folgendes einfügen (der Mod/Admin hat das immer noch nicht repariert - Javascript Codeblöcke gehen nicht und alle anderen werden mit Smilies versaut; ich hänge diesen Code auch als Datei an):

/**
* @author Wojtek
* URL parsen und Tabaktivatoren find.
*
*/

var simpletabinstances = 0; //Zählt die Instanzen von rgtabs
 
function tabLinker() {
	var tmp;
	var tmp2;
	tmp = window.location.href.split("#"); // Hier kann man noch experimentieren, aber # ist sicher, da es von realurl ignoriert wird
	if (typeof tmp[1] != 'undefined') { // Aktivatoren vorhanden?
		tmp2 = tmp[1].split("!"); // Ein Separator für die zwei Ebenen - beliebig
		if (simpletabinstances > 1 && parseInt(tmp2[0]) == (simpletabinstances-1)) return parseInt(tmp2[1])-1; // Findet die untere Stufe die gerade auch angezeigt werden soll
		else {
			if (simpletabinstances == 1) return parseInt(tmp2[0])-1; // Findet die obere Stufe
			else return 0; // Alle anderen unteren Stufen auf 0 setzen. Wichtig, wenn die aktive untere Stufe mehr Menupunkte hat als die anderen.
		}
	}
	else return 0; // Default
}

Dann ersetzen wir in der Funktion initialize() die Zeile:

this.setOptions(options);

Mit dem folgenden Dreizeiler:

simpletabinstances++;
this.setOptions(options);
this.options.show = tabLinker();

Voila!
Jetzt muss man nur eine Adresse besuchen, z.B.: http://www.musterseite.net/produktreihe/produkt1/#2!3

VG,

Wojtek

rgtabs_ext.js
882B
Unbekannter Benutzer ·

Hallo Zusammen,

nach langem und frustrierendem Experementieren mit den hier vorgeschlagenenn Lösungen, einem tiefen Atemzug ist mir die Frage von Georg hier im Thread noch mal aufgefallen… 

just2b schrieb

...ist der anker auch im quellcode, ists auch der anker von diesem tab?

Nein, bei mir war er es nicht… 

Dank intensivem rumgoogla weiß man wie man die Anker verstecken kann… und nachdem man auch die hinteren Schubladen der Suchmaschinen durchsucht hat findet man die Lösung wie man diese Teile reinbekommt wenn man sie aus irgendwelchen Gründen nicht hat…

Typo3 erstellt wieder Anker mit:

tt_content.stdWrap.dataWrap = <a id="c{field:uid}"></a>
tt_content.stdWrap.prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>

So, nun funktioniert bei mir die normale Verlinkung auf Content Elemente auch in rgtabs die automatisch aufgeteilt werden (ohne Änderungen im JScript).

Gibt es eine Aufteilung mit CE-Abstände, mittels "|" funktioniert das ganze leider nicht mehr… Hat das jemand bisher gelöst? Oder ist das ein magisches Phänomen meiner Typo3-Installtionen?