sort

Seřadí kolekci podle zvolených pravidel.

Collection sort (
    Collection input ,
    String direction [ ,
    String subvalue-path [ ,
    Comparator comparator ] ]
)
input
Výchozí kolekce, kterou je třeba seřadit.
direction
Směr řazení: cokoliv začínající na 'A' nebo 'a' značí řazení vzestupně, ostatní hodnoty řazení sestupně.
subvalue-path
Cesta k podhodnotě, podle které se mají prvky výchozí kolekce řadit. Jednotlivé kroky jsou oddělené tečkou. Každý krok je jméno podhodnoty, která se má získat z aktuální hodnoty. Pokud není cesta definovaná, řadí se přímo podle prvků kolekce.
comparator
Komparátor, tedy objekt definující pravidla řazení – typicky podle aktuálního jazyka.
Příklad: Seřazení kolekce assetů podle titulku
Šablona
{while sort(kolekceAssetu, "A", "title")}
  ...
{/while}

Předpokládáme, že je definovaná proměnná kolekceAssetu obsahující seznam s assety (proměnnou mohla do šablony zveřejnit řídící třída pageletu apod.).

Pro účely dané iterace je pomocí funkce sort seřadíme abecedně podle titulku: jednotlivé prvky kolekce jsou assety, cesta k podhodnotě pro porovnání je jednokroková, název podhodnoty je "title".

Funkci lze použít k seřazení mapy podle klíčů nebo hodnot.

Příklad: Seřazení mapy podle klíčů nebo hodnot
Šablona
{with asMap(
  "x", "b",
  "z", "a",
  "y", "c"
)}
klíče abecedně:   {sort(_, "A", "key")}<br /> 
hodnoty abecedně: {sort(_, "A", "value")} 
{/with}
Výstup
klíče abecedně:   [x=b, y=c, z=a]<br /> 
hodnoty abecedně: [z=a, x=b, y=c] 

Kolekcí k setřídění může být cokoli, co je v prostředí TFS iterovatelné; speciálně tedy také výčtový zdroj položek.

Příklad: Řazení sekcí podle titulku článku "index"
Šablona
{while sort(_template.menu_source, "A", "index.title")}
  ...
{/while}

Iterací přes výčtový zdroj se získá seznam assetových obálek; ty se pak řadí podle podhodnoty "title" (titulku) na podhodnotě "index" (dětském assetu sekce s názvem "index").

Poznámky k různým verzím systému jNetPublish

Funkce byla přidána ve verzi 3.4.26 (dřívější verze ji mají, ale nefunguje korektně).

Pro vložení příspěvku do diskuse se přihlašte.