[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