[TYPO3-german] Verschachtelte if Abfragen in fluid

Cedric Ziel cedric at cedric-ziel.com
Fri Dec 20 14:16:50 CET 2013


  Kein Problem :)

Du kannst in fluid Templates partials benutzen. Partials lagern primär
einen gewissen Teil der Arbeit in ein anderes Teil-Template aus. Das
ermöglicht es, zB mehrere Seiten-Templates mit vollständig
unterschiedlichen Strukturierungen anzulegen. Gleiche Elemente wie die
Navigation sollten ann nicht dupliziert angelegt werden, sondern in
partials.
Diese können dann von den Seitentemplates geladen werden.

<f:render partial="Foo/Bar" arguments="{user: me}"/>

Damit würdest du ein Template anweisen, an genau dieser Stelle ein partial
zu rendern, mit einem array aus argumenten, die dann im Template zur
Verfügung stehen (in diesem Fall würde dir im Partial eine Variable/ein
Objekt, je nachdem, was es im Original ist,  {user} zur Verfügung stehen.

Eine Section funktioniert grundsätzlich genauso, der Unterschied ist,
aber, das Sections grundsätzlich nur im lokalen Template zur Verfügung
stehen (es sei denn Partial. dazu später).

Du könntest also ein Template haben:
<f:section name="main">
<f:comment>
Hier wird ein slider gerendert...
</f:comment>
<div class="blubb">
<f:for each="{slides}" as="slide">
<f:if condition="...">
<f:then>
<f:render section="sliderLayout1" arguments="{slide: slide}"/>
</f:then>
<else>
<f:render section="sliderLayout2" arguments="{slide: slide}"/>
</f:else>
</f:for>
</div>
</f:section>
<f:section name="sliderLayout1">
{slide.image -> f:debug()}
</f:section>
<f:section name="sliderLayout2">
{slide.image -> f:debug()}
</f:section>
(https://gist.github.com/cedricziel/8054573)

Du kannst aber auch in Partials sections haben, und wie folgt rendern:
<f:render partial="Slider/Slide" section="layout1" arguments="{slide:
slide}"/>

Hier suchen wir im partialsRootPath im Verzeichnis Slider das Partial Slide
und rendern es mit den Argumenten.
Damit lassen sich komplexere Strukturen besser verschachteln und die
einfachen Templates werden sauberer und kleiner.

Es gibt noch eine magische Variable, die man eher in Page Templates
gebrauchen kann: {_all}
Damit stehen nach folgender Anweisung
<f:render partial="Slider/Slide" section="layout1" arguments="{_all}"/>
Alle variablen und Objekte aus dem aktuellen Scope (aus der aktuellen
Section. Variablen gelten immer nur in einer Section!) zur Verfügung.

Als Beispiel hätte ich noch:
https://github.com/Ecodev/bootstrap_package/blob/master/htdocs/typo3conf/ext/speciality/Resources/Private/Layouts/Page.html
Ein Page Template, das mit Partials und Sections zusammen getackert wird.
https://github.com/Ecodev/bootstrap_package/blob/master/htdocs/typo3conf/ext/speciality/Resources/Private/Partials/Navigation.html
Ein passendes Partial dazu.

Ich kapsele zB alle Navi-Elemente in so einem Navigation Partial in
unterschiedlichen Sections (MainNavigation, FooterNavigation...)

VG;
Cedric

Zitat von Philipp Holdener <philipp.holdener at me.com>:

> Hallo Cedric
>
>> +1 für die Benutzung von Sections und Partials (und Sections in
>> Partials!)
>
> Fühl mich davon überfordert :(
> Hab noch kein Tutorial gefunden das mir das einfach erklärt.
> Wie gesagt - hab erst gerade mit Fluid gestartet.
>
> Gruss
> Philipp
> _______________________________________________
> TYPO3-german mailing list
>
TYPO3-german at lists.typo3.orghttp://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


More information about the TYPO3-german mailing list