Mit JQUERY Inhalte dynamisch nachladen (Templavoila)
Verwenden Sie noch das alte Templating in TYPO3 mit Subparts und Markern, findet Sie haufenweise Anleitungen im Netz, wie Sie die Inhalte aus der Datenbank dynamisch mit JQUERY- oder einem anderen Javascript-Framework nachladen können.
In diesem Tutorial möchte ich Ihnen zeigen, wie Sie auch die Inhalte dynamisch nachladen können, wenn Sie Templavoila als Template-Engine benutzen.
Das erste was Sie dafür benötigen, ist ein sogenanntes Sub-Template in Templavoila. Mit Sub-Templates in Templavoila ist es u.a. möglich, Ausgaben für verschiedene Ansichten zu steuern, wie es z.B. bei der Druckversion in Templavoila der Fall ist. Also benötigen wir ein Sub-Template, welches nur den Inhalt der jeweiligen Seite holt.
Um nun eine solche Ansicht erstellen zu können, wird ein neuer "type of rendering" benötigt. Hier für müssen Sie folgende Typoscript-Zeile im TSconfig (Seiteneigenschaften) der Root-Page hinzfügen.
- Quelltext: Alles auswählen | Zeilennummerierung an/aus
-
-
TCEFORM.tx_templavoila_tmplobj.rendertype.addItems.inhalt = Nur Inhalt
-
"Nur Inhalt" ist die Bezeichnung, die in "Select a type of rendering" angezeigt wird und "inhalt" wäre die ID, die man im Typoscript-Setup ansprechen kann. Sie können hier auch eigene Bezeichnungen wählen.
Was Sie jetzt benötigen wäre noch eine HTML-Vorlage die Sie entsprechend nur für den Inhalt mappen müssen. Die Vorlage könnte wie folgt aussehen.
- Quelltext: Alles auswählen | Zeilennummerierung an/aus
Wenn Sie diese Vorlage gemappt haben, müssen Sie im Templavoila-Vorlagenobjekt noch einstellen, dass dies eine Untervorlage (Sub-Template) Ihrer Hauptvorlage ist.
Jetzt müssen Sie im Haupt-Setup nur noch festlegen, wann diese Version verwendet werden soll. Das kann man entweder über einen GET-Parameter machen, oder Sie definieren einfach einen neuen Seiten-Typ.
Ich füge einfach mal beide Möglichkeiten hier ein:
- Quelltext: Alles auswählen | Zeilennummerierung an/aus
-
-
-
##################
-
## Erste Möglichkeit
-
##################
-
[globalVar= GP:inhalt>0]
-
page.10.childTemplate = inhalt
-
[global]
-
-
##################
-
## Zweite Möglichkeit
-
##################
-
pageinhalt<page
-
pageinhalt.typeNum=1
-
pageinhalt.10.childTemplate = inhalt
Wenn Sie bis hier hin alles richtig gemacht haben, sollte nur der Inhalt angezeigt werden, wenn Sie in der URL den parameter "inhalt=1" oder "type=1" mitgeben, also z.B. index.php?id=400&type=1
Da der generierte Inhalt aber in die bereits bestehende Seite eingefügt werden muss, müssen Sie noch den ganzen Headerbereich deaktivieren, sonst wäre der Header zweimal vorhanden.
- Quelltext: Alles auswählen | Zeilennummerierung an/aus
-
-
pageinhalt.config {
-
disableAllHeaderCode =1
-
-
disableCharsetHeader =1
-
-
disablePrefixComment =1
-
}
-
Jetzt kommen wir zum Einsatz von JQUERY. Ich gehe mal davon aus, dass JQUERY bereits eingebunden- und funktionsbereit ist. Des weiteren sollten Sie ene weitere Javascript-Datei mit folgenden Inhalt laden.
- Quelltext: Alles auswählen | Zeilennummerierung an/aus
-
-
//Auf den ggf. übermittelten Anker reagieren
-
if(location.hash){
-
x = location.hash;
-
}
-
-
//Links per Ajax nachladen
-
//$("a:not([href^='http://'])").click(function() {
-
getContent(url);
-
returnfalse;
-
});
-
-
//Informieren das etwas passiert
-
$(this)
-
});
-
});
-
-
});
-
-
/*
-
* Holt den Inhalt vom Server
-
*/
-
function getContent(url){
-
//erweitere aufzurufenden Link
-
url: url.replace(/\.html/,"/ajax.html"),
-
//wenn es geklappt hat
-
//Inhalt reinschreiben und anzeigen
-
$("#content")
-
//Adresszeile aktualisieren
-
location.hash= url.replace(/\.html/,"");
-
}
-
});
-
}
Wer schon öfters mit JQUERY gearbeitet hat, sollte das Javascript ganz gut verstehen können. Vom Grunde her haben wir hier ein DIV-Container mit der ID menu (#menu), wo drin sich die Navigation befindet. Bei Klick auf einen Link innerhalb von #menu wird die Funktion getContent aufgerufen. Da ich glaube, dass in Ihrem Projekt realurl im Einsatz ist, müssen Sie die REALURL-Konnfiguration noch leicht etwas anpassen.
- Quelltext: Alles auswählen | Zeilennummerierung an/aus
-
-
'type'=>'user',
-
'userFunc'=>'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
-
'spaceCharacter'=>'-',
-
'expireDays'=>3,
-
'rootpage_id'=>'1',
-
),
-
'defaultToHTMLsuffixOnPrev'=>1,
-
),
-
),
-
),
-
);
Wie das dynamische nachladen von Inhalte in TYPO3 mit JQUERY und Templavoila aussehen kann, sehen Sie auf meiner eigenen Seite. Natürlich können Sie noch weitere Effekte mit einbauen.




