MarcusDau
Occasional Collector

Sortierung lowerCase bei contentSelect

Jump to solution

Hallo!

Kleine Frage kurz vorm Wochenende.

Ich habe folgenden contentSelect:

<CMS_FUNCTION name="contentSelect" resultname="fr_alle_eintraege" context="PAGE">

    <CMS_PARAM name="schema" value="Data"/>

    <QUERY entityType="Glossar">"

        <ORDERCRITERIA attribute="ueberschrift" descending="0"/>

    </QUERY>

</CMS_FUNCTION>

Wie man sieht, möchte ich nach der Überschrift aufsteigend sortieren.

Dabei gibt es aber das Problem, dass ich auch Einträge mit einem Kleinbuchstaben am Anfang habe. Diese werden dann (für mich) nicht richtig einsortiert.

Reihenfolge würde also zum Beispiel so aussehen: A B C D E M Z e k v

Kann ich diese Einträge irgendwie direkt im contentSelect nach lowerCase sortieren?

Grüße

Marcus

1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Marcus,

die direkte Sortierung in der contentSelect Funktion funktioniert nur, wenn die Datenbank die Ergebnisse in der gewünschten Sortierung zurückliefert.

Also musst Du selber sortieren. Ist aber nicht wirklich schwer. Eigentlich müsste hier folgendes funktionieren:

ORDERCRITERIA aus der Funktion entfernen.

Ergebnis so auffrufen:

$CMS_FOR(element,contentSelect.copy.sort(x -> x.text.toLowerCase())$

Und um die nächste Frage gleich vorweg zu nehmen. Mit deutschen Umlauten geht es dann so:

$CMS_FOR(element,contentSelect.copy.sort(x -> x.text.toLowerCase().replaceAll("ö","oe").replaceAll("ä","ae").replaceAll("ü","ue")))$

Viele Grüsse aus Dortmund,

  Holger

View solution in original post

1 Reply
hoebbel
Crownpeak employee

Hallo Marcus,

die direkte Sortierung in der contentSelect Funktion funktioniert nur, wenn die Datenbank die Ergebnisse in der gewünschten Sortierung zurückliefert.

Also musst Du selber sortieren. Ist aber nicht wirklich schwer. Eigentlich müsste hier folgendes funktionieren:

ORDERCRITERIA aus der Funktion entfernen.

Ergebnis so auffrufen:

$CMS_FOR(element,contentSelect.copy.sort(x -> x.text.toLowerCase())$

Und um die nächste Frage gleich vorweg zu nehmen. Mit deutschen Umlauten geht es dann so:

$CMS_FOR(element,contentSelect.copy.sort(x -> x.text.toLowerCase().replaceAll("ö","oe").replaceAll("ä","ae").replaceAll("ü","ue")))$

Viele Grüsse aus Dortmund,

  Holger