Sandy
I'm new here

contentSelect Liste mit Id beschränken

Jump to solution

Hallo zusammen,

habe eine Datenbank-Vorlage, in welches eine header-Funktion 'contentSelect' eingebaut werden soll.

Diese header-Funktion soll eine Liste aller Pressemeldungen ausgeben, welche die id des jeweiligen Datensatzes haben.

Dabei sollen die Pressemeldungen nach dem Datum absteigend sortiert sein.

Das DB-Schema sieht folgendermaßen aus (siehe Anhang):

Es gibt eine Tabelle Company, welches gleichzeitig die Datenbank-Vorlage ist, in welche die header-Funktion reinkommen soll.

Diese referenziert zu der Tabelle Press_Post_Box in einer 1:1-Beziehung.

Die Tabelle Press_Post_Box steht zu der Tabelle Press_Messages in einer 1:n-Beziehung und beinhaltet daher eine Liste aller Pressemeldungen zur jeweiligen Company.

Diese Pressemeldungen sollen in der Datenbank-Vorlage Company nach dem Datum absteigend sortiert ausgegeben werden.

Habe provisorisch mal so eine header-Funktion geschrieben:

<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">

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

          <CMS_VALUE_PARAM name='id' value='#row.id' /> 

          <QUERY entityType="Company">

          <ORDERCRITERIA attribute="press_Post_Box.press_MessagesList.date_%lang%" descending="1" />

          <FILTERPARAM parameter="id" datatype="java.lang.Integer"/>

        </QUERY>

</CMS_FUNCTION>

Nur leider lässt sich der Parameter #row.id nicht so auslesen. Es sollen hier alle Pressemeldungen ausgegeben werden, welche die Id der jeweiligen Company haben.

Diese Id wird in der Datenbank-Vorlage mit 'CMS_VALUE(#row.id)' ausgelesen.

Wie muss man so eine header-Funktion schreiben, damit nur die Pressemeldungen ausgegeben werden, die zur jeweiligen Company gehören.

Mit freundlichen Grüßen,

Snadra Stolle

0 Kudos
1 Solution

Accepted Solutions

Das hier ist die richtige header-Funktion:

<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">

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

          <CMS_VALUE_PARAM name='idCompany' value='#row.getId().toNumber' /> 

          <QUERY entityType="Press_Messages">

              <ORDERCRITERIA attribute="date_%lang%" descending="1" />

             <FILTERPARAM parameter="idCompany" datatype="java.lang.Integer"/>

              <EQ attribute="press_Post_Box.company.fs_id" parameter="idCompany" />

        </QUERY>

</CMS_FUNCTION>

View solution in original post

0 Kudos
3 Replies
hoebbel
Crownpeak employee

Hallo Frau Stolle,

versuchen Sie mal an zwei Schrauben zu drehen:

<CMS_VALUE_PARAM name='id' value='#row.getId()' />

bzw.

<CMS_VALUE_PARAM name='id' value='#row.getId().toNumber' />

und

<FILTERPARAM parameter="id" datatype="java.lang.Long"/>

Funkioniert keine der mögichen Kombinationen?

Was gibt denn $CMS_VALUE(#row.getId().class)$ und $CMS_VALUE(#row.getId().toNumber.class)$ aus?

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

In ihrer Abfrage fehlt auch jeden Fall noch eine Bedingung (also ein EQ-Param o.ä.). Am einfachsten ist es, wenn Sie den Query-Wizard nutzen, dort können Sie sich die richtige Abfrage zusammenklicken.

0 Kudos

Das hier ist die richtige header-Funktion:

<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">

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

          <CMS_VALUE_PARAM name='idCompany' value='#row.getId().toNumber' /> 

          <QUERY entityType="Press_Messages">

              <ORDERCRITERIA attribute="date_%lang%" descending="1" />

             <FILTERPARAM parameter="idCompany" datatype="java.lang.Integer"/>

              <EQ attribute="press_Post_Box.company.fs_id" parameter="idCompany" />

        </QUERY>

</CMS_FUNCTION>

0 Kudos