Search the FirstSpirit Knowledge Base
Moin,
ist es möglich bei Abfragen für Datenquellen (also dem brauen Bereich ) auf Projekteinstellungen zurückzugreifen? Was ich ich machen will, ist folgendes:
In den Projekteinstellungen kann eine aktuelle Veranstaltung gewählt werden, das ist ein einfacher String (ps_verboseFairId).
Jetzt will ich in einer weiteren Datenquellen 'News' nur die Einträge anzeigen (filtern), welche die in den Projekteinstellung gewählte Relation zu einem bestimmten Event besitzen. Es gibt also eine Relation von 'News' zu 'Event'. Angezeigt werden sollen News, die mit einem Event verknüpft sind, dessen technische ID (fairIdentifier) gleich der Projekteinstellung (ps_verboseFairId) sind.
Also in einem Content Select habe ich folgende Abfrage erfolgreich getestet:
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="fr_bar">
<CMS_PARAM name="schema" value="mySchema" />
<CMS_VALUE_PARAM name="param1" value="ps_verboseFairId" />
<QUERY entityType="news">
<FILTERPARAM parameter="param1" datatype="java.lang.String" value="foo"/>
<EQ attribute="event.fairIdentifier" parameter="param1"/>
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
Wenn ich aber versuche, im Tab Parameter param1 auf ps_verboseFairId zu setzen, wird der Wert anstelle einer Variablen, als String interpretiert und somit wird nicht auf die Projekteinstellungen zurückgegriffen.
Was habe ich da falsch gemacht, oder ist es überhaupt möglich, Projekteinstellungen für Filter auszuwerten?
Moin,
ich glaub das geht nicht. Was willst Du damit erreichen?
Sollen dann die Nutzer in den Datenquellen besser filtern können (vordefinierte Filter)?
Ich hatte das oben schon engedeutet, es geht hier um Messen, die halt jährlich wechselnde Veranstaltungen haben. Einmal im Jahr wird das ganze System auf das nächste Messejahr umgestellt (Projekteinstellungen) und da wäre es super, wenn alle Datenquellen dann entsprechend der Projekteinstellung nur die zugehörigen News/Pressemitteilungen/Pressetermine/Tagesprogrammpunkte ... anzeigen würde.
Es gibt derzeit schon 8 Tabellen pro Messe/FirstSpirit-Projekt, bei denen ich gerne automatisch die Filter umstellen möchte. Ich habe mich erstmal mit einem Beanshell-Skript über den Tag gerettet, dass die Projekteinstellung öffnet, die Entität liest und das besagte Attribut in die FilterParams schreibt.
Dynamsiche Filter fände ich aber trotzdem spannend, daher die Frage hier, ob das denn geht.
Da musst Du auf die FS-Spezies warten ...
Als Alternative könnte man in dem Filter das jeweilige Jahr angeben. Ob man nun in dem Filter das Jahr ändert, oder in den Projekteinstellungen ist vieleicht nicht ganz das selbe, aber es hilft auch.
Da musst Du auf die FS-Spezies warten ...
Prinzipiell funktionieren sollte das. Gibt es denn Fehlermeldungen bei der Benutzung der angegebenen Syntax?
Was mich stutzig macht: Bei FILTERPARAM ist "java.lang.String" als "datatype" angegeben. ps_verboseFairId und event.fairIdentifier hören sich aber eher nach eine Zahl an ("java.lang.Integer" oder "java.lang.Long").
Ich hatte eben das gleiche Problem. Bei mir funktioniert es wie folgt:
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="fr_result">
<CMS_PARAM name="schema" value="schema_name" />
<CMS_VALUE_PARAM name="domain_id" value="ps_domain.toString().toNumber()" />
<QUERY entityType="t_entity">
<FILTERPARAM parameter="domain_id" datatype="java.lang.Integer" />
<EQ attribute="t_domain.fs_id" parameter="domain_id"/>
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
Entscheidend ist die Konvertierung toString().toNumber(), da es sich bei der Datenquelle um einen Integer handelt; in den Projekteinstellungen wird aber aus einer Combobox gelesen.
Vielleicht geht die Konvertierung auch etwas einfacher, also ohne den Zwischenschritt "toString()", dann bin ich gerne für Hinweise dankbar.
Viele Grüße
Sebastian