Zum Hauptinhalt gehen

Zugriff auf den letzten Wert in for-Schleife

Kommentare

2 Kommentare

  • Zendesk API User
    Author: feddersen - 7/23/2010 8:39

    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

    0
  • Zendesk API User
    Author: cpe - 12/10/2024 11:03

    Hello!

    Ich habe ein ähnliches Problem und frage mal hier:

    Ich habe auch Datensätze, die ein Datum enthalten. und ich möchte in einer Auswahlbox nur die Jahre haben. Allerdings nicht in der Ausgabe, sondern in der Auswahl im Template.

    Ich habe eine Query und eine Combobox und bis auf eine Kleinigkeit tut es das schon.

    Das Query macht aktuell nur die Sortierung:

    <QUERY entityType="press_article"> <ORDERCRITERIA attribute="date" descending="1"/> </QUERY>

    Die ComboBox wählt nur das Datum aus und formatiert es:

    <CMS_INPUT_COMBOBOX name="st_filter_year" hFill="yes" singleLine="no" useLanguages="no"> <CMS_INCLUDE_OPTIONS type="database"> <LABELS> <LABEL lang="*">#item.date.format("yyyy")</LABEL> </LABELS> <QUERY name="tt_press_article_years"/> <TABLE>tt_press_article</TABLE> </CMS_INCLUDE_OPTIONS> <LANGINFOS> <LANGINFO lang="*" label="Year"/> </LANGINFOS> </CMS_INPUT_COMBOBOX>

    Was mir fehlt ist ein Distinct im Query oder der ComboBox.

    In der Doku bin ich leider nicht fündig geworden. Gibt es hier eine Möglichkeit an mein Ziel zu kommen?

    Cheers
    Connz

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.