Zählen der Spaltenbreite in Absatztemplate für dynamischen Umbruch
Author: Prinzessin
Publication Date: 2/10/2012 10:42
Hallo,
ich habe ein Seitentemplate, das 5 Spalten hat. Im Inhaltsbereich ist ein Absatztemplate erlaubt, welches eine Combo-Box enthält, in der die Breite (1, 2, 3, 4 oder 5 Spalten) gewählt werden kann.
Je nachdem wie viele Absätze mit entsprechender Spaltenanzahl erstellt wurden, möchte ich in der Absatzvorlage einen Zähler einbauen, damit nach 5 oder mehr Spalten ein Zeilenumbruch erfolgt.
Beispiel:
1. Absatztemplate: 3 Spalten
2. Absatztemplate: 1 Spalte
3. Absatztemplate: 1 Spalte
=> 3 + 1 + 1 = 5 Spalten (maximale Breite erreicht --> Zeilenumbruch)
Mein GUI-Element sieht so aus:
<CMS_INPUT_COMBOBOX name="st_columns" allowEmpty="no" convertEntities="none" hFill="no" noBreak="no" useLanguages="no">
<ENTRIES>
<ENTRY value="1">
<LANGINFOS>
<LANGINFO lang="*" label="one" description="1 column"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="2">
<LANGINFOS>
<LANGINFO lang="*" label="two" description="2 columns"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="3">
<LANGINFOS>
<LANGINFO lang="*" label="three" description="3 columns"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="4">
<LANGINFOS>
<LANGINFO lang="*" label="four" description="4 columns"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="5">
<LANGINFOS>
<LANGINFO lang="*" label="five" description="5 columns"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Column width of teaser" description="Please choose."/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
und meine Abfrage im Template ist momentan so:
$CMS_IF(counter.isEmpty())$
$CMS_SET(counter, st_columns)$
$CMS_ELSE$
$CMS_SET(counter, counter + st_columns.toString().toNumber())$
=> hier wollte ich mit der Überprüfung der addierten Spalten fortfahren
$CMS_END_IF$
Leider wird mir der counter immer wieder neu gesetzt und ich kann damit so nicht rechnen. Ich habe auch schon versucht den Counter direkt m Seitentemplate zu setzen ($CMS_SET(counter,1)$) aber das klappt leider auch nicht.
Tags: absatztemplate, addition, box, combo, contents, development, page, section, sections, template, vairable
-
Author: hoebbel - 2/10/2012 13:18
Hallo Frau Neubauer,
den Counter direkt im Seitentemplate zu setzen, ist schon mal eine gute Idee.
Wenn ich es richtig verstehe, dann scheitert es bei Ihnen daran, dass Sie den Counter nicht hochzählen können. Ursache dafür ist, dass Variablen immer nur in Ihrem Generierungskontext gültig ist. Eine auf der Seite definierte Variable ist also für die Seite und alle darin befindlichen Absätze gültig, eine auf einem Absatz definierte/modifizierte Variable nur für den aktuellen Absatz.
Wenn Sie also eine Variable auf der Seite definieren ($CMS_SET(counter,1)$), hat diese Variable bei der Initialisierung jedes Absatzes der Seite den Wert 1. Auch wenn Sie den Wert innerhalb einer Absatz erhöhen, hat die Variable auf dem nächsten Absatz wieder den Wert 1.
Lösung: Sie müssen also innerhalb eines Absatzes den Wert der Variable auf der Seite entsprechend erhöhen. Das können Sie tun, indem Sie den variablenwert direkt in den Generierungskontext der Seite schreiben:
$CMS_SET(#global.context("PAGE")["counter"], counter + st_columns.toString().toNumber())$
Weitere Informationen zu den Kontexten finden Sie hier:
http://www.e-spirit.com/odfs42/de/vorlagenentwicklung/variablen/kontexte_2/kontexte.html
User: FIRSTDoku
Pass: FSdown_V2
Viele Grüsse aus Dortmund,
Holger Höbbel
0
Please sign in to leave a comment.
Comments
1 comment