lars_kollin
I'm new here

Strukturvariablen in ContentSelect

Jump to solution

Hallo zusammen,

in https://community.e-spirit.com/message/3742#3742 und https://community.e-spirit.com/message/4580#4580 habe ich jetzt schon so einiges über das Auslesen von Strukturvariablen gelernt.

Dennoch gelingt es mir nicht, diese Techniken innerhalb der Parameterisierung eines ContentSelect einzusetzen.

Ich möchte muss Datensätze einer Tabelle anhand des Jahres eines Datumsfeldes des jeweiligen Datensatzes in zwei Ausgabe trennen. Die jeweiligen ContentSelects sehen dabei wie folgt aus:


<CMS_FUNCTION name="contentSelect" resultname="datensaetze_nach_trennjahr">                                                                                                    
   <CMS_PARAM name="schema" value="datensaetze"/>                                                                                                        
   <CMS_VALUE_PARAM name='von' value='#startdate.set("day_of_month",1).set("month",0).set("year",#global.page.meta("mt_trennjahr")).set("hour",0).set("minute",0).set("second",0).getTime()' />
    <QUERY entityType="datensatzname">
        <ORDERCRITERIA attribute="datum" descending="1" />                                                                                                                     
        <FILTERPARAM parameter="von" datatype="java.util.Date" value="0"/>                                                                                                                                                                                                              
        <GTE attribute="datum" parameter="von" />                                                                                                                        
    </QUERY>                                                                                                                                            

</CMS_FUNCTION>

für alle Datensätze bis zu einem bestimmten 'Trennjahr' und

<CMS_FUNCTION name="contentSelect" resultname="datensatze_vor_trennjahr">                                                                                                    
   <CMS_PARAM name="schema" value="datensaetze"/>                                                                                                        
   <CMS_VALUE_PARAM name='bis' value='#startdate.set("day_of_month",1).set("month",0).set("year",#global.page.meta("mt_trennjahr")).set("hour",0).set("minute",0).set("second",0).getTime()' />
    <QUERY entityType="datensatzname">
        <ORDERCRITERIA attribute="datum" descending="1" />                                                                                                                     
        <FILTERPARAM parameter="bis" datatype="java.util.Date" value="0"/>
        <LT attribute="aufloesung" parameter="bis" />                                                                                                 
    </QUERY>                                                                                                                                            
</CMS_FUNCTION>

für alle Datensätze ab dem 'Trennjahr'.

Das funktioniert mit der Angabe von metadaten auch soweit gut. Aber metadaten vererben sich ja nicht, und die Seitenstruktur ist recht weit verschachtelt und umfangreich. Es muss also eine Lösung her, die den Wert aus einer übergeordneten Strukturvariable (hier: ss_trennjahr) nimmt, und anstelle des metadatums in den CMS_VALUE_PARAM einsetzt.

Vielen Dank vorab fürs Grübeln, oder auch fürs schnelle Wissen.

Grüße,

Lars

0 Kudos
1 Solution

Accepted Solutions

Hallo Lars,

in den Struktur-Variablen werden Strings definiert, keine Zahlen oder Datumsobjekte.

Es müsste so etwas wie ss_trennjahr.toNumber benutzt werden.

Vielleicht hilft Dir ja auch das hier weiter: "12.07.2008".toDate("dd.MM.yyyy") --> Datumsobjekt

Viele Grüsse aus Dortmund,

  Holger

View solution in original post

0 Kudos
4 Replies
feddersen
Community Manager

Metadaten werden, wie Strukturvariablen auch, über die Baumstruktur veerbt. Also brauchen Sie ihre Lösung eigentlich gar nicht anpassen.

Auf Strukturvariablen können Sie ganz normal zugreifen. In der Vorlage über $CMS_VALUE(name_der_strukturvariable) bzw. in einem Ausdruck direkt mittel name_der_strukturvariable

ich hatte gehofft dass es so einfach wäre...

was es aber wohl nicht ist.


<CMS_VALUE_PARAM name='von' value='#startdate.set("day_of_month",1).set("month",0).set("year",ss_trennjahr).set("hour",0).set("minute",0).set("second",0).getTime()' />

erzielt nun kein Ergebnis mehr, und mit

<CMS_VALUE_PARAM name='bis' value='#startdate.set("day_of_month",1).set("month",0).set("year",ss_trennjahr).set("hour",0).set("minute",0).set("second",0).getTime()' />

werden alle Datensätze geholt. Das deutet darauf hin, dass ss_trennjahr hier  0 (oder null) ist.

im Body komme ich mit $CMS_VALUE(ss_trennjahr)$ allerdings schon an den eingegebenen Wert heran; dieser wird korrekt ausgegeben.

Als zusätzlich vorhin vergessene Information:

die Vorlage, in der die ContentSelects ausgeführt werden, wird in die eigentliche Seitenvorlage mit $CMS_RENDER(template:"name-des-templates")$ hereingerendert. Steht deshalb womöglich die Strukturvariable nicht zur Verfügung?

0 Kudos

Hallo Lars,

in den Struktur-Variablen werden Strings definiert, keine Zahlen oder Datumsobjekte.

Es müsste so etwas wie ss_trennjahr.toNumber benutzt werden.

Vielleicht hilft Dir ja auch das hier weiter: "12.07.2008".toDate("dd.MM.yyyy") --> Datumsobjekt

Viele Grüsse aus Dortmund,

  Holger

0 Kudos

ahja.

dann war es wohl doch so einfach wie zunächst erhofft.

Ich war schon bei 18-teiligen Punktnotations-Konstrukten, und habe dabei das naheliegendste übersehen.

Vielen Dank!

viele Grüße,

Lars

0 Kudos