Questions & Answers

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

Type a product name