- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Seitenglobale Variablen in FirstSpirit
Hallo zusammen,
ich habe das Problem, dass ich alle Links innerhalb des eines bestimmten Body-Bereiches nummerieren muss. Dafรผr habe ich im Seiten-Template eine Variable gesetzt:
$-- TEST --$
$CMS_SET(link_counter, 0)$
$-- END TEST --$
In den Linkvorlage habe ich anschlieรend folgendes eingebaut, dass den Zรคhler hochsetzen soll:
<a href="$CMS_RENDER(template:"intern_link", pageref:sitestoreref)$$CMS_IF(!sitestoreref.getSection.isEmpty)$#$CMS_VALUE(sitestoreref.getSection.getId())$$CMS_END_IF$"
target="$CMS_VALUE(if(!linkTarget.isEmpty,linkTarget.toString,"_self"))$"
title="$CMS_VALUE(comment.convert2,default:"")$">>>Hier: $CMS_IF(isSet(link_counter))$ $CMS_VALUE(link_counter)$$CMS_END_IF$$CMS_SET(link_counter, link_counter+1)$ $CMS_VALUE(link_counter)$<<$CMS_VALUE(text.convert2,default:"")$</a>
Leider erhalte ich bei allen Links als Ausgabe immer Hier: 0 1. Wie kann ich die Links auf einer Seite zรคhlen, bzw. kann man รผberhaupt soetwas wie eine Seiten-Globale Variable setzten?
Viele Grรผรe
Renรฉ Zoller
- Labels:
-
Developers
-
Knowledgebase
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
es gibt zwei mรถgliche Schreibweisen, um die Variable nicht im aktuellen, sondern in einem angegebenen Kontext zu รคndern [hier der Seitenkontext, also "PAGE"]
$CMS_SET(#global.context("PAGE")["
link_counter
"],link_counter
+ 1)$$CMS_SET(#global.context("PAGE").
link_counter
,link_counter
+ 1)$
Hintergrund:
รnderungen an Variablen werden im aktuellen Kontext durchgefรผhrt. [Im Absatz also im Kontext "SECTION"].
Eine Variable ist immer im aktuellen und allen darunterliegenden Kontexten gรผltig [deshalb kann eine in den Projekteinstellungen definierte Variable [Kontext "global"] als auch eine Struktur-Variable [Kontext "SITESTORE"] sowohl auf einer Seite als auch einem Absatz einfach ausgegeben werden.
Wenn die entsprechende Variable in einem "niedrigeren" Kontext [im Beispiel wird die Variable aus dem Seitenkontext im Absatzkontext รผberschrieben] รผberschrieben wird, so ist diese variable aus dem "niedrigeren" Kontext gรผltig, solange dieser Kontext existiert (im Beispiel also solange, bis der nรคchste Absatz ausgegeben wird)
Viele Grรผsse aus Dortmund,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hat alles wunderbar funktioniert. Vielen Dank fรผr die schnelle Antwort!
Renรฉ
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Die Lรถsung fรผr eine einfach Zahl funktioniert soweit. Versuche ich aber einer Array-List etwas hinzuzufรผgen, kommt in der Variablen nichts an?
Im Seitentemplate steht:
$CMS_SET(page_links, [])$
In der Linkvorlage steht analog zur Lรถsung oben:
$CMS_SET(void, #global.context("PAGE").page_links.add("tmp"))$
Jedoch ergibt Auswertung von $CMS_VALUE(page_links.size())$ immer 0. Mach ich hier etwas falsch?
Viele Grรผรe
Renรฉ
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Renรฉ,
die Array List steht im Generierungskontext der Seite. Hier mรผsste es eigentlich ausreichend sein, wenn Du im Absatz entsprechende Elemente hinzufรผgst - diese sollten dann eigentlich automatisch im Generierungskontext der Seite verfรผgbar sein.
Aber eigentlich mรผsste das Setzen der Variable รผber den definierten Generierungskontext auch funktionieren. Die Linkvorlage wird auch garantiert nach der Definition aufgerufen?
Und wo gibst Du die Grรถรe aus?
Und wird wirklich nur ein String dem Array hinzugefรผgt?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Renรฉ,
du kannst auch mal in der FS-API nach Context schauen, da gibt es Methoden um z.B. alle Variablennamen auszugeben und zu setzen. Unter 4.1 konnte ich mit $CMS_SET(#global.context("Page").name, 1)$ den Wert nicht verรคndern aber mit der set Methode aus der API hat alles Prima funktioniert.
Gruร, Johannes

