joschka
I'm new here

Filter setzen in CMS_INPUT_CONTENTLIST

Hallo Community,

folgendes Szenario:

FirstSpirit Server mit mehreren Projekten, davon unterschiedliche Auftritte, welche ein globales Masterprojekt für Medien, Templates und DB Einträge verwenden.

Das globale Masterprojekt enthält unter Anderem:

- ein Datenbankschema, in dem in einer Tabelle die IDs für die unterschiedlichen Projekte gepflegt werden. Diese IDs dienen in den angeschlossenen Projekten als Filter für DB Views

- ein weiteres Datenbankschema, in dem in einer Tabelle Metatags gepflegt werden. Die Metatag Tabelle besitzt zudem eine Spalte "Projekt", die angibt, für welches Projekt der Metatag Eintrag gültig ist

Die einzelnen "Satellitenprojekte"/Auftritte sollen nun die DB Einträge der Metatags verwenden, allerdings nur die Einträge, die für das jeweilige Projekt relevant sind.

Meine Probleme / Fragen:

- Optimalerweise lässt sich die Pflege der Metatags im Masterprojekt über eine n:m Beziehung abbilden. Problem ist allerdings, dass die beiden Tabellen in unterschiedlichen Schemen liegen, somit ist keine Fremdschlüsselbeziehung möglich. Korrekt?

- Alternativ habe ich deshalb im Metatag Formular eine COMBOBOX hinzugefügt, um das Projekt auszuwählen, für welches der Metatag Eintrag relevant ist. Die ID wird dann auf ein Textfeld gemappt und am Eintrag gespeichert. Anschließend sollen im jeweiligen Projekt nur die Datensätze angezeigt werden, welche für das Projekt relevant sind. Das funktioniert soweit ganz gut in der Datenquellen Verwaltung mit einem Filter.

Allerdings soll nun in der Metadaten Seitenvorlage eine CONTENTLIST für die Auswahl von Metatags eingebunden werden.

Hier habe ich nun das Problem, dass immer ALLE Datenasätze aus dem Remote Masterprojekt angezeigt werden. Es sollen aber nur die gültigen Metatags für das aktuelle Projekt zur Auswahl angezeigt werden.

Dies ist aktuell nur über das QUERY Element möglich. Allerdings muss ich hier "hartkodiert" die Projekt ID (im Beispiel 580) eintragen.

    <CMS_INPUT_CONTENTLIST name="pt_metatags" allowEmpty="yes" allowNew="no" table="metatags.tt_metatags" useLanguages="no">

      <LANGINFOS>

        <LANGINFO lang="*" label="Meta Tags" description="Please choose Meta Tags"/>

        <LANGINFO lang="DE" label="Schlagworte" description="Bitte Schlagworte auswählen"/>

      </LANGINFOS>

      <QUERY entityType="MetaTags">

        <FILTERPARAM value="580" datatype="java.lang.String" parameter="website"/>

        <EQ attribute="Website" parameter="website"/>

      </QUERY>

    </CMS_INPUT_CONTENTLIST>

 

Gibt es hierfür auch eine andere Möglichkeit / einen anderen Lösungsansatz? Mit diesem Ansatz müsste ich für jedes Projekt ein eigenes Metadatentemplate erstellen.

Verwendete FirstSpirit Version ist 4.2 R4.

Schon mal vorab vielen Dank und Gruß

Joachim

0 Kudos
3 Replies
daniel2
I'm new here

hallo joachim,

ich geb gleich zu, dass ich's nur überflogen hab – ich meine aber, dass dir nur die übergabe einer variablen (der projekt id) in die content_list fehlt.

das kannst du beispielhaft so realisieren:

<CMS_CDATA_PARAM name="website"><![CDATA[$CMS_VALUE(md_projekt_id)$]]></CMS_CDATA_PARAM>

edit: den tag <FILTERPARAM> dann abändern auf <FILTERPARAM datatype="java.lang.String" parameter="website"/>. hoffentlich hilfts. in einer contentSelect-funktion hat's wunderbar geklappt.

viele grüße,

daniel

0 Kudos

Hallo Joachim,

benötigst Du noch weitere Hilfe oder hat Dir Daniels Antwort bereits geholfen?

In diesem Fall wäre es super, wenn Du seine "richtige Antwort" entsprechend markierst, damit auch andere

Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung

gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Michaela

0 Kudos

Hallo Michaela,

nein, ich bin hier leider noch nicht weiter und die Antwort hat nicht wirklcih geholfen, da ich innerhalb der CONTENTLIST kein <CMS_CDATA_PARAM> setzen kann.

Frage nochmals etwas vereinfacht:

In einer CMS_INPUT_CONTENTLIST kann ich eine Tabelle als Referenz angeben. Wenn ich nun Datensätze auswählen will, werden mir immer ALLE Datensätze der Tabelle angezeigt.

Was ich suche ist eine Referenz auf einen von mir angelegte Query bzw. auf eine Datenquelle mit gesetztem Filter.

Bisher habe ich hier keine Lösung gefunden, ausser direkt innerhalb der ContentList eine QUERY einzubinden.

Dies ist eine sehr unsaubere Lösung, da das Template in unterschiedlichen Projekten verwendet wird und der Filter sich in den unterschiedlichen Projekten ändert (somit im Template immer umgeändert werden muss).

Gibt es hier eine saubere Lösung? Übersehe ich irgendwas?

Danke und Gruß

Joachim

0 Kudos