Questions & Answers

SOLVED
Frank_HLP
Returning Observer

Dynamische contentSelect-Funktion

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

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

View solution in original post

0 Kudos
2 Replies
mbergmann
Crownpeak employee

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

0 Kudos
Frank_HLP
Returning Observer

Hallo Michael,

ich konnte das Problem mit dem von Dir vorgeschlagenen Ansatz lรถsen. Danke!

Viele GrรผรŸe

Frank

0 Kudos

Type a product name