Ole
Returning Observer

CMS_RENDER: Übergabe und Auswertung von Listen

Jump to solution

Hallo,

ich versuche derzeit eine Möglichkeit zu erarbeiten eine zentrale Scripteinbindung zu realisieren. Mein derzeitiger Ansatz nutzt eine Formatvorlage, welche per CMS_RENDER aufgerufen wird und mit dem Aufruf entsprechende Wertelisten übergeben werden.

Ein Aufruf könnte so aussehen:

$CMS_RENDER(template:"scriptuse",libs:"[jquery,modernizr,jquery-ui]",version:"[1.8.2,1.4.3,1.6.2]")$

In der Formatvorlage würde ich es dann so auflösen wollen (sämtlichen nicht relevanten Code habe ich weggelassen):

$CMS_FOR(libs_value, libs)$

    Script: $CMS_VALUE(libs_value)$" | Version: $CMS_VALUE(version.get[#for.index])$"

$CMS_END_FOR$

Funktioniert das, oder gibt es bessere/praktikablere Ansätze?

Danke & Gruß

Ole

0 Kudos
1 Solution

Accepted Solutions

Hallo Ole,

mit den Korrekturen von Peter (

$CMS_RENDER(template:"scriptuse",libs:[{"name":"jquery","version":"1.8.2"}, {"name":"modernizr","version":"1.4.3"})$ 


) bekomme ich mit folgenden Code folgende Ausgabe:

$CMS_FOR(lib, libs)$

       <!-- name: $CMS_VALUE(lib.name)$ -->

       <!-- version: $CMS_VALUE(lib.version)$ -->

$CMS_END_FOR$

Ausgabe:

<!-- name: jquery -->

<!-- version: 1.8.2 -->

<!-- name: modernizr -->

<!-- version: 1.4.3 -->

Klappt das bei Dir auch?

Grüße Marian

View solution in original post

0 Kudos
8 Replies
Peter_Jodeleit
Crownpeak employee

Deine Parameter sind keine Listen. Wenn du den Aufruf anpasst, dann sollte es funktionieren

$CMS_RENDER(template:"scriptuse",libs:["jquery","modernizr","jquery-ui"],version:["1.8.2","1.4.3","1.6.2"])$

Alternativ kannst du auch komplexere Elemente in der Liste übergeben:

$CMS_RENDER(template:"scriptuse",libs:[{"name":"jquery","version":"1.8.2"}, {"name":"modernizr","version":"1.4.3"}])$
...
$CMS_FOR(lib, libs)$
    Script: $CMS_VALUE(lib.name)$ | $CMS_VALUE(lib.version)$
$CMS_END_FOR$

[EDIT]

Syntax korrigiert, war JSON-Syntax Smiley Wink

Peter

Hallo,

danke für den alternativen Ansatz. Mein Aufruf im Seitentemplate sieht jetzt so aus:

     $CMS_RENDER(template:"scriptuse",libs:[{name:"jquery",version:"1.8.2"}])$

Und in der Formatvorlage lasse ich zum Testen erstmal nur den Namen ausgeben

     $CMS_FOR(lib, libs)$

       <!-- $CMS_VALUE(lib.name)$ -->

     $CMS_END_FOR$

Jedoch ist die Ausgabe in der HMTL Seite leer

     <!-- -->

Wo liegt mein Fehler?

Danke & Gruß

Ole

0 Kudos

Hallo Ole,

direkt kann ich jetzt keinen Fehler erkennen. Was passiert, wenn Du libs oder libs.class.name ausgeben lässt, also ohne for-Schleife?

Grüße

Marian

0 Kudos
Ole
Returning Observer

Hallo,

für

<!-- $CMS_VALUE(libs.class.name)$ -->

bekomme ich in der Ausgabe

<!-- java.util.ArrayList -->

und für

<!-- $CMS_VALUE(libs)$ -->

kommt

<!-- [{=false}] -->

Danke & Gruß

Ole

0 Kudos

Sorry, ich hatte JSON-Syntax benutzt. Habe mein Posting oben jetzt  korrigiert..

Peter
0 Kudos

Hallo Ole,

mit den Korrekturen von Peter (

$CMS_RENDER(template:"scriptuse",libs:[{"name":"jquery","version":"1.8.2"}, {"name":"modernizr","version":"1.4.3"})$ 


) bekomme ich mit folgenden Code folgende Ausgabe:

$CMS_FOR(lib, libs)$

       <!-- name: $CMS_VALUE(lib.name)$ -->

       <!-- version: $CMS_VALUE(lib.version)$ -->

$CMS_END_FOR$

Ausgabe:

<!-- name: jquery -->

<!-- version: 1.8.2 -->

<!-- name: modernizr -->

<!-- version: 1.4.3 -->

Klappt das bei Dir auch?

Grüße Marian

0 Kudos
Ole
Returning Observer

Hallo,

ja, klappt bei mir jetzt auch.

Kaum macht man es richtig ... Smiley Wink

Danke & Gruß

Ole

PS: Die Doku ist ausbaufähig Smiley Wink

0 Kudos

PS: Die Doku ist ausbaufähig Smiley Wink

Für Verbesserungs-Vorschläge sind wir immer offen Smiley Wink

Anwendungsfälle und konkrete Beispiele wird man aber eher hier in der Community finden.

Peter
0 Kudos