Hallo,
in TypoScript habe ich ein Array, das ich mit der for-each-Schleife in Fluid ausgeben möchte. Leider klappt das nicht so wie gewollt - es wird nichts angezeigt.
Der Fluid/Html-Code:
<f:for each="{topnav}" as="el">
<li>{el}</li>
</f:for>
Und so erstelle ich das Array in TS:
page = PAGE
temp.topnav {
10 = Home
20 = Register
}
page.10 = FLUIDTEMPLATE
page.10 {
template = FILE
template.file = fileadmin/templates/main.html
variables {
topnav < temp.topnav
}
}
Das Problem ist, dass ich nur eine leere Ausgabe bekomme, zumindest was die Schleife an sich betrifft. Die Html-Tags vor und nach der Schleife werden ausgegeben.
Wäre schön, wenn mir da wer weiterhelfen kann.
Gruß rotkiv
Gib doch mal mit dem debug-Viewhelper {topnav} aus und schau dir an, was bei Fluid vorliegt. So, wie du es machst, habe ich noch nie ein Array aufgebaut, daher weiß ich nicht, ob da überhaupt ein anständiges Array im Template ankommt.
Hm, dann bekomme ich immer ein Null-Objekt raus. Wie würdest du denn das Array deklarieren und initialisieren?
Wenn dein Beispiel nicht drastisch vereinfacht ist, dann handelt es sich bei dem, was du ausgeben willst, um ein Menü. Dafür gibt es spezielle TS-Objekte, mit denen du das komplette HTML für das Menü aufbauen kannst. Stichwort HMENU, nicht TEXT.
Danke für den Hinweis aber HMENU ist mir als solches bekannt. Ich bin gerade dabei, meine Seite von Typo3 4.7 auf 6.1 umzustellen und wechsle dabei auch von Templa Voila auf Fluid. Also ist mir der Teil eher Neu.
Ich dachte nun, dass ich vll. den Html-Teil aus TypoScript entfernen und eben durch Fluid abbilden kann. Daher auch mein Versuch, hier nicht HMENU zu verwenden, sondern ein einfaches Array, welches dann im Fluid-Template mit HTML strukturiert wird. Damit wollte ich dann TypoScript an sich nur noch zur Konfiguration, aber nicht der Generierung von Anzeigeelementen verwenden. Dieser Teil sollte dann im Fluid-Template passieren. Wäre dies wie beschrieben sinnvoll?
Das Problem ist, dass TypoScript und Fluid nicht so zusammenarbeiten, dass man was anderes als Strings in Fluid reinkriegt. Schau Dir mal den Menu ViewHelper aus der VHS Extension an. Der macht was Du willst. http://fedext.net/viewhelpers/vhs/Page/Menu/DirectoryViewHelper.html
Danke, das ist sogar noch ein wenig mehr als ich wollte 🙂
Die Extension war mir bei der Suche auch schon aufgefallen, zunächst wollte ich sie aber wegen der Komplexität vermeiden. Nun habe ich sie mir doch einmal genauer angeschaut und habe das Einführungspaket zum Laufen bekommen. Leider ist die Doku nicht sehr Einsteiger-freundlich, zumindest bei dem Teil, wo es um das Einbinden in Typo3 geht. Bis auf die besagten Einführungspakete habe ich dazu leider nicht sehr viel gefunden. Daher ist mir jetzt nicht klar, ob die Fluid-Erweiterung jetzt nur über eine T3-Extension funktioniert, oder ob das eben nur zu Demo-zwecken so gemacht wurde und bei der eigenen Einbindung dann direkt über den Template-Editor gemacht werden soll. Würde mich diesbzgl. nochmal über einen Hinweis freuen (oder vll. sogar ein Tut/Doku, die das beschreibt). Vom Prinzip her macht die Extension ja nichts anderes als ein Standard-Setup und Konstanten zu laden. Dann werden aber auch noch zusätzlich einige php-Methoden bereitgestellt.