Kurz nochmal zum Verständnis:
den Beispielcode von dir, muss ich den komplett direkt in das T3Sports-Template einbauen oder nur die die Anweisung in die Selectboxen und den JS-Code in mein Haupt-Template?
T3Sports (cfcleague) mit rgtabs
bastians schriebKurz nochmal zum Verständnis:
den Beispielcode von dir, muss ich den komplett direkt in das T3Sports-Template einbauen oder nur die die Anweisung in die Selectboxen und den JS-Code in mein Haupt-Template?
Das bleibt dir überlassen! Hauptsache die JS-Funktion ist am Ende im FE vorhanden. Andernfalls bekommst du nämlich einen JS-Fehler. Ich packe solche Javascript-Funktionen normalerweise in eine extra JS-Datei.
Hast du Firebug installiert? Das ist für solche Arbeiten ganz nützlich. 🙂
Ich habe Probleme das DIV zu finden, in das ich den Content laden soll. Firebug bringt mir folgenden Fehler:
$("rgtabs-container") is null
searchUrl("/index.php?id=herren1&no_cache=1&cfc_league_fe[saison]=5&cHash=94b5a95a6e")index.ph...1fdae8971 (Linie 529)
onchange(change )
Mein Scope-Template sieht so aus:
<!-- ###SCOPE_SELECTION### start -->
<script>
/**
* Start einer Suchanfrage per Ajax
*/
function searchUrl(url) {
var listDiv = $('rgtabs-wrapper').empty().addClass('ajax-loading');
new Ajax(url, {
method: 'get',
update: $('rgtabs-wrapper'),
evalScripts: true,
onComplete: function() {listDiv.removeClass('ajax-loading');}
}).request();
}
</script>
<div class="cfcleague-scopeselection">
<form style="margin:0; padding:0;" action="dummy.php" method="get">
<!-- Auswahl der Saison -->
###SAISON_SELECTION###
<div class="cfcleague-scopeselection-saison">
<!--
###SAISON_LINK_FIRST#### ##SAISON_NAME### ###SAISON_LINK_FIRST###
###SAISON_LINK_PREV#### ##SAISON_NAME### ###SAISON_LINK_PREV###
-->
<select name="action" onchange="searchUrl(this.options[this.selectedIndex].value);">
###SAISON_SELECTION_2###
<option ###SAISON_ISCURRENT### value="/###SAISON_LINK_URL###">###SAISON_NAME###</option>
###SAISON_SELECTION_2###
</select>
<!--
###SAISON_LINK_NEXT#### ##SAISON_NAME### ###SAISON_LINK_NEXT###
###SAISON_LINK_LAST#### ##SAISON_NAME### ###SAISON_LINK_LAST###
-->
</div>
###SAISON_SELECTION###
Ich glaube den kompletten Container von rgtabs solltest du nicht austauschen. Da liegt ja auch die Auswahlbox mit drin. Leg einfach ein zusätzliches DIV um die Spielplanausgabe. Dieses DIV kannst du dann immer aktualisieren.
Das sollte schon mal klappen. Allerdings wirst du dann auf ein anderes Problem treffen: Die Auswahlboxen werden bald nicht mehr funktionieren... Aber schau erstmal, daß es überhaupt einmal klappt! 🙂
Ich vergaß das JS im Header. Habe prototype.js genommen, das kollidert nun glaube ich mit den rgtabs, da diese nun weg sind.
EDIT: mootools und prototype mögen sich ja nicht. Hmm...was nun?
Tja, du musst dich für eine Bibliothek entscheiden. 🙂
Da allerdings rgtabs Mootools verwendet, hast du kaum eine andere Wahl. Oder du programmierst rgtabs mit Prototype nach. 😉
Die Mootools sind aber eh besser!
Gut, dann versuche ich mich damit mal.
War dein Code auf prototyp ausgerichtet oder läuft der auch unter mootools?
bastians schriebGut, dann versuche ich mich damit mal.
War dein Code auf prototyp ausgerichtet oder läuft der auch unter mootools?
auf mootools, wie auf Seite 1 zu lesen ist 😉
Habe die aktuellste Version mal hochgeladen:
http://www.fvloechgau.de/typo3/index.php?id=herren1&no_cache=1
Irgendwie tut sich nichts, sofern ich eine Lösung habe, kommt es in das Wiki, versprochen.
Du meintest, dass die Auswahlboxen nicht mehr richtig funktionieren würden. Inwiefern?
bastians schriebHabe die aktuellste Version mal hochgeladen:
http://www.fvloechgau.de/typo3/index.php?id=herren1&no_cache=1
Irgendwie tut sich nichts, sofern ich eine Lösung habe, kommt es in das Wiki, versprochen.
Ich schau's mir morgen früh mal an.
Du meintest, dass die Auswahlboxen nicht mehr richtig funktionieren würden. Inwiefern?
Erstmal sehen wir, daß der Ajax-Request überhaupt funktioniert und dann kümmern wir uns um die Lösung der Detailprobleme. 😉
Also die URL für den Ajax-Request ist schon mal falsch:
/index.php?id=herren1&no_cache=1&cfc_league_fe[saison]=6&cHash=61fdae8971
Dein TYPO3 liegt in einem Unterverzeichnis, also musst du dieses in den Pfad mit aufnehmen. Außerdem fehlt der Parameter für den PageType, damit du wirklich die Ajax-Seite aufrufst.
Es sollte dann ungefähr in diese Richtung gehen:
/typo3/index.php?id=herren1&type=500&no_cache=1&cfc_league_fe[saison]=6&cHash=61fdae8971
Beim Seitentyp musst du natürlich die Nummer nehmen, die du konfiguriert hast. Die 500 wie im Beispiel ist es ja anscheinend nicht. TYPO3 meldet nämlich Page not configured.
Sorry, vielen Dank für dein Bemühen aber irgendwie stehe ich auf dem Schlauch bzw. meine Kenntnisse sind zu beschränkt.
Ich muss zuerst eine Seite anlegen mit z.B. type=500 wie auf Seite 1 beschrieben.
Ich schaffe es aber nicht einen Bezug herzustellen bzw den type im Link unterzubringen...
Ich sollte es wohl lassen, wenn man sich zu wenig auskennt... #angry#
Ja ich hab's gestern Abend ja auch nur sehr grob skizziert. :o
Also die Zielseite für den Ajax-Request musst du schon einrichten, wie im Beispiel angegeben. Das sollte eigentlich soweit passen. Der Code kommt mit ins Typoscript-Template.
Mit dieser URL solltest du dann einen Spielplan erhalten:
http://www.fvloechgau.de/typo3/index.php?id=herren1&no_cache=1&cfc_league_fe[saison]=6&type=500
(Wie bekommt man eigentlich im Parameter id den Seitennamen rein, anstatt der Seiten-UID?? Das hab ich ja noch nie gesehen... :o )
Nun müssen die Links in der Selectbox angepaßt werden. Im HTML-Template sollte es dann so aussehen:
<option ###SAISON_ISCURRENT### value="/typo3/###SAISON_LINK_URL###&type=500">###SAISON_NAME###</option>
Es wird also das Unterverzeichnis noch mit integriert und am Ende der URL hängst du einfach noch den Typ fest mit ran. Das ist die einfachste Lösung.
Mir ist aufgefallen, daß bei ersten Laden der Seite das DIV mit dem Spielplan nicht mehr angezeigt wird. Es ist zwar im Quellcode vorhanden, aber unsichtbar. Das solltest du natürlich beheben. Hast du eventuell ein DIV nicht wieder richtig geschlossen?
Wenn du bei den Seiteneigenschaften unter "alias" einen Wert eingibst, wird dieser statt der UID ausgegeben 🙂
Welches DIV meinst du genau? Ich finde es nicht.
http://www.fvloechgau.de/typo3/index.php?id=herren1&no_cache=1
Jetzt klappt es, er lädt nur relativ lange, da er alle Spiele ausgibt.
Wenn du bei den Seiteneigenschaften unter "alias" einen Wert eingibst, wird dieser statt der UID ausgegeben 🙂
Haha, wieder was dazu gelernt! 🙂
Welches DIV meinst du genau? Ich finde es nicht.
Also wenn ich auf "Spiele" klicke erscheint bei mir im Firefox nur die Auswahlbox für die Saison, nicht aber die zugehörigen Spiele. Beim ersten Laden werden diese ja ohne Ajax eingebunden. Wenn ich mir den Quelltext der Seite anschaue, dann gibt es am Seitenende ein DIV mit der id="matchs". Und dort ist auch ein Spiel drin...
Jetzt klappt es, er lädt nur relativ lange, da er alle Spiele ausgibt.
Das war zu erwarten, weil du ja nur per Parameter die Saison einschränkst. Zusätzlich muss nun auch noch der Club gesetzt werden. Man könnte das per Request machen, wenn du aber eh nur die Spiele deines Vereins zeigen willst, dann kannst du das auch per TS machen:
spielplan = PAGE
spielplan {
typeNum=500
config.disableAllHeaderCode = 1
config.metaCharset = utf-8
config.additionalHeaders = Content-Type:text/html;charset=utf-8
config.xhtml_cleaning = 0
config.admPanel = 0
config.sendNoCacheHeaders = 1
config.no_cache = 1
10 < plugin.tx_cfcleaguefe_competition
10.action = tx_cfcleaguefe_actions_MatchTable
10.clubSelection = 1
10.groupSelection = 1
}
Also den clubSelection und groupSelection sind hier neu drin. Du musst jeweils die entsprechende UID eintragen. Die Alterklasse brauchst du natürlich nur, wenn du mit mehreren Alterklassen arbeitest.
Um das an der Stelle nochmal kurz zu verdeutlichen: In dem Objekt 10 liegt ganz normal das Wettbewerbsplugin von T3sports drin. Hier können nun alle Konfiguration und Formatierungen des Plugins vorgenommen werden. Du kannst also auch das HTML-Template wechseln oder die Größe der Logos setzen.
Aber weiter mit deiner Seite: Wenn ich die Selectbox anklicke, dann erhalte ich nun auch den JS-Fehler, daß kein Objekt Ajax gefunden wurde. Ich dachte ja die rgtabs arbeiten schon mit Ajax. Dem ist aber wohl nicht so.
Du hast doch bestimmt die Mootools-Extension installiert. Geh mal in deren Backend-Modul. Da kannst du auswählen, welche Teilbibliotheken geladen werden sollen. Mach da mal noch ein Häkchen bei Ajax mit rein und lass die Datei neu erstellen. Das sollte helfen. 🙂
In der Saison 2007/2008 sind normal auch keine Spiele eingetragen. Ich glaube das ist das Spiel, das im Tab "Tabelle" ausgegeben wird. Dort möchte ich nämliche die Tabelle und darunter die Spieltage anzeigen lassen. Da geht es ja dann mit dem Laden innerhalb des DIVs gleich weiter... :o
Bei rgtabs kann man auswählen, ob man den Content mittels AJAX laden lassen möchte oder nicht, habe ich jetzt mal eingestellt. Im Backend der mootools Extension ist Ajax aktiviert.
bastians schriebIn der Saison 2007/2008 sind normal auch keine Spiele eingetragen. Ich glaube das ist das Spiel, das im Tab "Tabelle" ausgegeben wird. Dort möchte ich nämliche die Tabelle und darunter die Spieltage anzeigen lassen. Da geht es ja dann mit dem Laden innerhalb des DIVs gleich weiter... :o
Mmh, na gut. Es wär halt ganz hilfreich, wenn man direkt paar Spiele sehen würde. Dann sieht man auch besser was sich genau tut.
Bei rgtabs kann man auswählen, ob man den Content mittels AJAX laden lassen möchte oder nicht, habe ich jetzt mal eingestellt. Im Backend der mootools Extension ist Ajax aktiviert.
Sehr gut und es gibt auch direkt einen anderen Fehler. 🙂
Pack mal die Javascript-Funktion in eine externe Datei. Wenn der Code per Ajax geladen wird, dann muss dem Browser erst noch gesagt werden, daß da JS drinne ist. Da kann es schnell passieren, daß wir die rgtabs noch optimieren müssen. 😉
In einer externen Datei haben wir das Problem nicht!
Mit dem Code könntest du das z.B. machen:
page.headerData.100 = TEXT
page.headerData.100.value = <script type="text/javascript" src="fileadmin/js/deinedatei.js"></script>
digedag schriebbastians schriebIn der Saison 2007/2008 sind normal auch keine Spiele eingetragen. Ich glaube das ist das Spiel, das im Tab "Tabelle" ausgegeben wird. Dort möchte ich nämliche die Tabelle und darunter die Spieltage anzeigen lassen. Da geht es ja dann mit dem Laden innerhalb des DIVs gleich weiter... :o
Mmh, na gut. Es wär halt ganz hilfreich, wenn man direkt paar Spiele sehen würde. Dann sieht man auch besser was sich genau tut.
Habe für die Saison 2007/2008 nun auch Spiele angelegt bzw. die aus 2008/2009 kopiert und die Saison in den Wettbewerben geändert. Nun zeigt er mir die spiele doppelt an #evil#
digedag schriebBei rgtabs kann man auswählen, ob man den Content mittels AJAX laden lassen möchte oder nicht, habe ich jetzt mal eingestellt. Im Backend der mootools Extension ist Ajax aktiviert.
Sehr gut und es gibt auch direkt einen anderen Fehler. 🙂
Pack mal die Javascript-Funktion in eine externe Datei. Wenn der Code per Ajax geladen wird, dann muss dem Browser erst noch gesagt werden, daß da JS drinne ist. Da kann es schnell passieren, daß wir die rgtabs noch optimieren müssen. 😉
In einer externen Datei haben wir das Problem nicht!Mit dem Code könntest du das z.B. machen:
page.headerData.100 = TEXT page.headerData.100.value = <script type="text/javascript" src="fileadmin/js/deinedatei.js"></script>
[/quote]
Gesagt, getan. Einmal ausgewählt, zeigt er immer die selben Spiele an, egal was ich auswähle. Auch obwohl in Saison 2009/2010 gar kein Inhalt existiert.
bastians schriebHabe für die Saison 2007/2008 nun auch Spiele angelegt bzw. die aus 2008/2009 kopiert und die Saison in den Wettbewerben geändert. Nun zeigt er mir die spiele doppelt an #evil#
Mmh, also ich sehe immer noch keine Spiele... #paralyzed#
Die Spiele zu kopieren ist übrigens keine so gute Idee. Im Prinzip hätte doch nur ein kleiner Testwettbewerb in 2007/08 mit einem Spiel gereicht. Wenn du Spiele kopierst, musst du ja anschließend noch die Verweise auf die Teams ändern. Denn die musst du ja für die neue Saison auch neu anlegen...
Gesagt, getan. Einmal ausgewählt, zeigt er immer die selben Spiele an, egal was ich auswähle. Auch obwohl in Saison 2009/2010 gar kein Inhalt existiert.
Na aber es funktioniert doch erstmal!! Die Daten werden per Ajax geladen! 🙂
Das zuviele Spiele geladen werden hatte ich fast vermutet. Setz mal noch diese Option in der Ajax-Seite:
spielplan.10.saisonSelectionInput = 1
Erst damit reagiert das Plugin auf den Parameter für die Saison!
Ich bin dann jetzt offline. Morgen kannst du weiterfragen! 🙂
Ich habe nun das Kopierte gelöscht und neue Gegner und Spiele angelegt. Außerdem deinen Code eingefügt.
http://www.fvloechgau.de/typo3/index.php?id=herren1
Er lädt zu Beginn keine Spiele, wechselt man aber zu einer anderen Saison und wieder zurück, dann lädt er sie 🙂
Noch eine Frage: wieso dauert das Laden so lange? Die Tabs sind ja Unterseiten die versteckt sind, also eigentlich bereits geladen. Zumindest die Spiele der Saison 2007/2008 müsste er doch auf Anhieb anzeigen, oder?
Ansonsten würde ich noch eine Ladeanzeige integrieren, sonst denkt der User es passiert nichts.
Schönen, wohlverdienten Feierabend 🙂
bastians schriebEr lädt zu Beginn keine Spiele, wechselt man aber zu einer anderen Saison und wieder zurück, dann lädt er sie 🙂
Hast du in dem Plugin, das von rgtabs geladen wird überhaupt den Spielplan mit ausgewählt? Wenn ja, sollte er eigentlich mit geladen werden...
Noch eine Frage: wieso dauert das Laden so lange?
Also die Seite ist generell sehr lahm. 0.5 Req/s sind keine Glanzleistung. Vermutlich ist der TYPO3-Cache noch nicht aktiviert. Wenn möglich solltest du auch einen PHP-Beschleuniger wie eAccelerator installieren.
Die Tabs sind ja Unterseiten die versteckt sind, also eigentlich bereits geladen. Zumindest die Spiele der Saison 2007/2008 müsste er doch auf Anhieb anzeigen, oder?
Du läßt rgtabs jetzt per Ajax laufen. Da werden die Daten erst beim Klick geladen. Zur Saison 2007/08 siehe meine erste Frage.
Ansonsten würde ich noch eine Ladeanzeige integrieren, sonst denkt der User es passiert nichts.
Ist ja eigentlich schon drin. Das DIV bekommt beim Lade-Vorgang die Klasse "ajax-loading" verpaßt. Die gibt es aber bei dir nicht. Du kannst aber einfach die Klasse von rgtabs verwenden: "rgtabs-ajax-loading"
Tausch das einfach in der Funktion searchUrl() aus. Aber aufpassen: die Klasse ist dort an zwei Stellen drin! 🙂