Hallo Herr Oltmanns,
die contentSelect-Funktion liefert eine List zurück, die einige Methoden bereitstellt, die Ihnen weiterhelfen solllten. Siehe http://www.e-spirit.com/odfs42/de/vorlagenentwicklung/vorlagensyntax/datentypen/listen/listen.html
Insbesondere die Methoden filter(Lambda) und distict(Lambda).
Hier ein kleines Beispiel, dass sie für ihren Anwendungsfall noch anpassen müssen.
Gegeben ist eine Liste von Immobilien (kann auch das Ergebnis einen contentSelects sein).
Es sollen alle PLZ ausgegeben werden, zu denen es eine Immobilie gibt (ohne doppelte). Die PLZ werden dazu noch sortiert.
Manuell eine Liste erstellen
==========
$CMS_SET(immos, [
{"Name":"A", "Adresse":{"Ort":"Dortmund", "PLZ":44400, "Strasse":"Amsterdamer Platz", "Nr":"32"}, "Preis":177.000, "qmWohn":190},
{"Name":"B", "Adresse":{"Ort":"Dortmund", "PLZ":44400, "Strasse":"Amsterdamer Weg", "Nr":"64"}, "Preis":180.000, "qmWohn":195},
{"Name":"C", "Adresse":{"Ort":"Dortmund", "PLZ":41877, "Strasse":"Alleestr.", "Nr":"114"}, "Preis":150.000, "qmWohn":150},
{"Name":"D", "Adresse":{"Ort":"Dortmund", "PLZ":41877, "Strasse":"Buchenweg", "Nr":"11"}, "Preis":115.000, "qmWohn":100},
{"Name":"E", "Adresse":{"Ort":"Bochum", "PLZ":42345, "Strasse":"Kleiner Weg", "Nr":"2b"}, "Preis":555.000, "qmWohn":320},
{"Name":"F", "Adresse":{"Ort":"Bochum", "PLZ":42345, "Strasse":"Hohe Straße", "Nr":"6"}, "Preis":55.000, "qmWohn":64},
{"Name":"G", "Adresse":{"Ort":"Bochum", "PLZ":42345, "Strasse":"Tiefer Weg", "Nr":"21"}, "Preis":38.000, "qmWohn":37}
])$
$CMS_FOR(_immo, immos.sort(x -> x.Adresse.PLZ).distinct(x -> x.Adresse.PLZ))$
* $CMS_VALUE(_immo.Adresse.PLZ)$<br />
$CMS_END_FOR$
liefert:
* 41877
* 42345
* 44400
Das wäre die "elegante" Variante. Die Variante mit der CMS_FOR funktioniert auch, sie müssen nur folgende Zeile umschreiben.
$CMS_SET(datum_alt)$$CMS_VALUE(einstellungsdatum.einstellung.format("yyyyMM").toString.trim(),default:"")$$CMS_END_SET$
Wenn Sie ein umschließendes CMS_SET verwenden, erfolgt die Zuweisung nicht direkt. Alles innerhalb des CMS_SET wird als Vorlagenfragment betrachtet, dass erst bei der Ausgabe ausgewertet wird. Sie möchten ja den Wert direkt zuweisen, was sie wie folgt erreichen:
$CMS_SET(datum_alt,einstellungsdatum.einstellung.format("yyyyMM").toString.trim())$
Viele Grüße
Christoph Feddersen