[TYPO3-german] Dynamic content - modernes Templating?
Philipp Gampe
philipp.gampe at typo3.org
Thu Apr 14 22:39:38 CEST 2016
Hi Bernd,
Bernd Wilke wrote:
> [*] was wird überahaupt alles gerendert wenn das TS geparst wurde?
> ist es alles? oder nur page-objekte?
Das TS immer immer vollständigt geparst (sofern dies noch nicht im Cache
liegt). Daraus erzeugt TYPO3 ein PHP Array.
Dann werden alle Conditionals Blöcke im TS evaluiert und ggf. geparst. Dies
wird dann auf das TS PHP Array gemerged.
Nun beginnt das Rendering. Es wird das passende PAGE Objekt rausgesucht
(typeNum). Dort werden alle cObject für die numerischen Keys in der
sortierten numerischen Reihenfolge aufgerufen und ausgeführt. Alles andere
wird erstmal ignoriert.
Im Falle eines Fluid Templates wird allso die Klasse
FluidTemplateContentObject aufgerufen [1]. Die bekommt den aktuellen Content
(normalerweise ein leerer String) und das komplette Subarray unterhalb des
Content Objektes übergeben. Das ist in diesem Moment noch ein reines PHP
Array. Variaben, etc. wurden noch nicht angefasst.
Das FluidTemplateContentObject geht jetzt hin und rendert jede Variable
mittels der Methode cObjGetSingle(). Diese liefert einen String zurück.
Dann wird alles dem Fluid Template übergeben.
Der Fluid Compiler parst jetzt die Templates und versucht aus den Fluid
Templates und Partials PHP Code zu bauen (sofern noch nicht im Code Cache).
Auch die Viewhelper werden i.d.R. PHP Code, bzw. als PHP Funktionen
aufgerufen. Dann wird der generierte PHP Code mit den Variablen ausgeführt.
Im Falle des CObjectViewhelpers [2] wird wieder einfach die Methode
cObjGetSingle() des ContentObjectRenderer's aufgerufen. Erst jetzt wird das
cObject tatsächlich "ausgeführt". Wird der Viewhelper nicht aufgerufen, zum
Beispiel weil er in einem f:if Block steht und die Bedingung nicht zutrifft,
dann wird das cObject auch nie aufgerufen.
Zusammenfassend: Im TS Template wird, ausgehend von dem aktuellen PAGE
Objekt, nur das gerendert, was auch gebraucht wird. Fluid wird in PHP
umgewandelt und dann mit den übergebenen Variablen ausgeführt.
Ich hoffe dies bringt etwas Licht in die Zusammenhänge.
[1]
http://api.typo3.org/typo3cms/current/html/class_t_y_p_o3_1_1_c_m_s_1_1_frontend_1_1_content_object_1_1_fluid_template_content_object.html
[2]
http://api.typo3.org/typo3cms/current/html/class_t_y_p_o3_1_1_c_m_s_1_1_fluid_1_1_view_helpers_1_1_c_object_view_helper.html
Grüße
--
Philipp Gampe – PGP-Key 0AD96065 – TYPO3 UG Bonn/Köln
Certified Integrator – Active contributor TYPO3 CMS
TYPO3 .... inspiring people to share!
More information about the TYPO3-german
mailing list