- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dynamische contentSelect-Funktion
Hallo zusammen!
Ich mรถchte mittels define eine contentSelect-Funktion aufbauen, um mehrere Vergleichswerte aus einer FS_LIST dynamisch der Abfrage hinzuzufรผgen. Ich habe eine einfache Funktion erstellt, die nur die Sortierung beeintrรคchtigt, um die contentSelect Funktion zu testen. Leider wird der Inhalt aus der define-Funktion ignoriert. Kann man etwas in der Art รผberhaup umsetzen?
<CMS_FUNCTION name="define" resultname="fr_query"> | ||
<CMS_CDATA_PARAM name="source"> | ||
<![CDATA[ | ||
<ORDERCRITERIA attribute="date" descending="1" /> | ]]> | |
</CMS_CDATA_PARAM> | ||
</CMS_FUNCTION> |
<CMS_FUNCTION name="contentSelect" resultname="fr_news_test">
<CMS_PARAM name="schema" value="test_news" /> | |
<CMS_VALUE_PARAM name="cat" value="st_category_list_global.value.fs_id" /> | |
<QUERY entityType="news">fr_query</QUERY> |
</CMS_FUNCTION>
Ich bin bei der Suche hier auf diesen Beitrag gestoรen https://community.e-spirit.com/message/19995#1999 . Wenn ich danach gehe, mรผsste doch auch mein Problem lรถsbar sein?
Viele Grรผรe
Frank
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Frank,
Spontan denke ich dass das so nicht funktioniert, weil Du (wenn ich es richtig verstehe) hier die Query mit einer variablen Anzahl von Kriterien dynamisch erzeugen und nicht nur einen ihrer Werte setzen willst.
Du kรถnntest alternativ ein Renderscript benutzen. Nicht um die Ausgabe zu erzeugen, sondern um eine รผbergebene leere Liste zu fรผllen. Das Template wรผrde dann auf der gefรผllten Liste statt auf dem Ergebnis des ContentSelect arbeiten.
Dem Renderscript รผbergibst Du neben der leeren Liste (die brauchst Du als "Rรผckgabewert-Container") auch die FS_LIST. Der Aufruf im Template wรคre dann in etwa:
$CMS_SET(set_results,[])$
$CMS_RENDER(script:"dyn_query",resultContainer:set_results,list:st_myList)$
Im Script "dyn_query" kannst Du Dir dann anhand der Infos aus der FS_LIST per API dynamisch eine Query bauen (de.espirit.or...) und ausfรผhren. Die einzelnen Ergebnisse legts Du dabei in die Variable "resultContainer". Das Script wรผrde selbst KEINE Ausgabe erzeugen:
result.setValue("");
Nach dem $CMS_RENDER$-Aufruf kannst Du dann im Template z.B. รผber die Ergebnisliste iterieren:
$CMS_FOR(for_resultEntry,set_results)$
...
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Frank,
Spontan denke ich dass das so nicht funktioniert, weil Du (wenn ich es richtig verstehe) hier die Query mit einer variablen Anzahl von Kriterien dynamisch erzeugen und nicht nur einen ihrer Werte setzen willst.
Du kรถnntest alternativ ein Renderscript benutzen. Nicht um die Ausgabe zu erzeugen, sondern um eine รผbergebene leere Liste zu fรผllen. Das Template wรผrde dann auf der gefรผllten Liste statt auf dem Ergebnis des ContentSelect arbeiten.
Dem Renderscript รผbergibst Du neben der leeren Liste (die brauchst Du als "Rรผckgabewert-Container") auch die FS_LIST. Der Aufruf im Template wรคre dann in etwa:
$CMS_SET(set_results,[])$
$CMS_RENDER(script:"dyn_query",resultContainer:set_results,list:st_myList)$
Im Script "dyn_query" kannst Du Dir dann anhand der Infos aus der FS_LIST per API dynamisch eine Query bauen (de.espirit.or...) und ausfรผhren. Die einzelnen Ergebnisse legts Du dabei in die Variable "resultContainer". Das Script wรผrde selbst KEINE Ausgabe erzeugen:
result.setValue("");
Nach dem $CMS_RENDER$-Aufruf kannst Du dann im Template z.B. รผber die Ergebnisliste iterieren:
$CMS_FOR(for_resultEntry,set_results)$
...
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
ich konnte das Problem mit dem von Dir vorgeschlagenen Ansatz lรถsen. Danke!
Viele Grรผรe
Frank

