dunkelblau
I'm new here

Datensatz <-> Seitenreferenz

Hallo,

wie kann man zu einem Datensatz einer Datenquelle die zugehörige Seite im Baum finden?

Eine Detailseite X ist im Inhalte- und Strukturbaum angelegt und dieser Seite X ist über "CMS_INPUT_OBJECTCHOOSER" ein Datensatz X zugeordnet.

Auf einer anderen Seite gebe ich eine Reihe von Datensätzen aus, die mit Datensatz X in Verbindung stehen. Ich möchte also direkt auf die Seite X linken, habe aber ja nur den Datensatz X. Wie kann man nun diese Seitenreferenz auslesen, die den Datensatz verwendet? Ist es überhaupt möglich?

Die Beschreibung ist etwas abstrakt gehalten, ich kann es bei Bedarf auch nch genauer beschreiben.

Vielleicht hat jemand schon eine Idee oder ein ähnliches Problem gehabt?

Danke im Voraus.

0 Kudos
12 Replies
gockel
Crownpeak employee

Es geht also um die Frage: "Wo wird Datesatz 'x' verwendet?"

Diese bekommt man von der API über diese Methode beantwortet:

Schema#getIncomingReferences(Entity entity)

0 Kudos

Wie rufe ich diese Methode in der Vorlage auf?

DB-Abfrage:

{code}

<CMS_HEADER>

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

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

                    <QUERY entityType="agency">

                    </QUERY>

          </CMS_FUNCTION>

</CMS_HEADER>

{code}

Ausgabe von agenciesresult:
{code}

$CMS_SET(list, [])$

$CMS_FOR(agency, agenciesresult)$

          $CMS_SET(void,list.add(dbs_jvm.getIncomingReferences(agency)))$

$CMS_END_FOR$

{code}

Leider geht es so nicht...

0 Kudos

Scheint in diesem Fall wohl nicht anwendbar zu sein, oder?

0 Kudos

Ich glaube ein CMS_REF folgender Art würde weiterhelfen:

$CMS_REF(pagefolder:"subfolder", contentId:322, template:"products.product_group")$

Hier mit im Teilbaum "subfolder" nach einer Contentprojektion gesucht, die auf der Tabellenvorlage "products.product_group" basiert und den Datensatz mit der Id 322 generiert.

Das ist auch noch mal in der Dokumentation erläutert.

0 Kudos

Auch das funktioniert leider nicht. Es kommt die Fehlermeldung "No match found in subfolder for template ...".

Handelt es sich denn um eine Content-Projektion, wenn ich per CMS_INPUT_OBJECTCHOOSER einen Datensatz aus der DB auswähle? Dann sollte das CMS_REF ja eigentlich funktionieren.

0 Kudos

Hallo,

die entsprechenden Namen müssen aus dem Beispiel CMS_REF von oben noch angepasst werden.

Wenn es den Ordner "subfolder" in der Strukturverwaltung nicht gibt, dann sollte ein anderer Ordnername hier angegeben werden. Wenn im Wurzelverzeichnis gesucht werden soll, dann muss z.B. "root" angegeben werden.

Entsprechend sollte der Name der Tabellenvorlage (vorher: "products.product_group")  auch dem eigenen Umfeld angepasst werden.

Wenn es nicht hilft bitte mal die komplette Fehlermeldung posten.

Viele Grüße

Rouven

0 Kudos

Handelt es sich denn um eine Content-Projektion, wenn ich per CMS_INPUT_OBJECTCHOOSER einen Datensatz aus der DB auswähle? Dann sollte das CMS_REF ja eigentlich funktionieren.

Den Satz hatte ich überlesen...dann lässt sich das so wahrscheinlich nicht lösen

So ganz ist mir das Vorgehen auch noch nicht klar.

Sehe ich das richtig, dass im Ausgangspost die Formulierung "Datensatz X" für unterschiedliche Datensätze angewandt wird?

Könntest du noch ein Screenshot der Referenzen und eine genauere Beschreibung von welcher Seite auf welche gelinkt werden soll posten, damit das Vorgehen klarer wird?

Viele Grüße

Rouven

0 Kudos
dunkelblau
I'm new here

Hallo Rouven,

von dem obigen Vorschlag bin ich weg, weil ich dort nicht weiterkam (obwohl alle Variablen angepasst waren).

Noch mal das Vorgehen im Detail:

1. Es gibt eine Anzahl an Seiten "Agenturdetail". Jeder Agentur ist per CMS_INPUT_OBJECTCHOOSER ein Datensatz aus der DB zugeordnet.

2. Es gibt eine Anzahl an Seiten "Jobdetail", der ebenfalls einem Datensatz "Job" zugeordnet ist. In der DB besteht zwischen Jobs und Agenturen eine m:n Beziehung.

3. Auf der Jobdetail gebe ich die Agenturen an, die mit dem jeweiligen Job verbunden sind. (Diese Informationen bekomme ich aus der Datenbank)

4.Von der Jobdetailseite aus muss ich auf die Agenturdetailseite verlinken. Also suche ich die "Agenturdetail"-Seitenreferenz zu dem entsprechenden Datensatz. Z.B. Zum Datensatz ID 1281 muss ich auf die Detailseite "jvm_spree" schliessen:

db_pages.jpg

Mein Code in der Jobdetailseite sieht derzeit so aus:

{code}

                              $CMS_SET(store, #global.project.userService.store("CONTENTSTORE", false))$

                              $CMS_SET(content, store.getContent2ByName("dbs_jvm.agency"))$

                              $--CMS_SET(content, store.storeElement(19083))--$

                              $CMS_SET(schema, content.schema)$

                              $CMS_SET(entity, content.getEntity(1281))$

                              $CMS_SET(references, schema.getIncomingReferences(entity))$

 

                              $CMS_VALUE(entity)$

 

                              references:

                              $CMS_FOR(r, references)$

                                        ref: $CMS_VALUE(r.getReferenceString)$<br>

 

                              $CMS_END_FOR$

{code}

Fehlermeldung hierbei:

19.07.2012 16:20:01.167 INFO  (de.espirit.firstspirit.generate.PreviewProduction): generating 'texter' (id=18853, html, DE), content processor de.espirit.firstspirit.generate.EmptyContentProcessor@2d96d4

19.07.2012 16:20:01.167 INFO  (de.espirit.firstspirit.store.access.sitestore.PageRefImpl): generating page reference 'texter' (id=18853, html, DE)

19.07.2012 16:20:01.195 INFO  ($CMS_SET(entity, content.getEntity(1288))$ at 106, 4): Setting 'entity' to 'null' - Undefined method 'de.espirit.firstspirit.parser.eval.NullEnhancer$Null#getEntity(java.math.BigInteger)'!

Alles spielt sich in Seitenvorlagen ab, nicht im HTML-Kanal der Tabellenvorlagen.

Danke,

Katrin

0 Kudos

Laut Logausgaben wird hier keine Datenquelle mit dem Referenznamen "dbs_jvm.agency" gefunden ...

Gruß

Stefan