- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Error resolving reference - reference to pagestore not allowed in generation
Ich versuche die Referenz einer Seite mit dem Template "Jobbรถrse" im aktuellen Ordner zu finden.
$CMS_FOR(Bruderelement,#global.page.parent.parent.getChildren())$
$CMS_IF(!Bruderelement.isFolder())$
$CMS_IF(Bruderelement.getTemplate().getName().equals("Jobbรถrse"))$
//$CMS_VALUE(Bruderelement.getDisplayName(#global.language))$
var RefJobboerse ='$CMS_REF(Bruderelement, templateSet:"JSON")$'
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
In der Vorschau klappt das auch ohne Probleme.
Beim Generieren bekomme ich jedoch folgenden Fehler::smileyconfused:
Error resolving reference - reference to pagestore not allowed in generation ($CMS_REF(Bruderelement, templateSet:"JSON")$
Hat jemand eine Idee wie ich das anders lรถsen kann?
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
du arbeitest da gerade auf dem Pagestore - also im Inhaltebereich (grรผn). Solche Seiten haben aber keine Links, sondern nur Seitenreferezen aus dem Sitestore (blau).
Klingt fรผr mich im ersten Moment auch konzeptionell eher fragwรผrdig Siblings im pagestore anzuschauen, da die Ordner im pagestore nichts mit der spรคteren Struktur zu tun haben. Solltet ihr eigtl. den sitestore meinen, dann mรผsstest du #global.page nur durch #global.node ersetzen und bei der Templateabfrage Bruderelement.page.template nehmen. Sollte tatsรคchlich der pagestore korrekt sein, dann mรผsstest du noch die eingehenden Referenzen der Seite durchsuchen. Dabei mรผsst ihr bedenken, dass eine Page mehrere Seitenreferenzen haben kann. Im Beispiel nehme ich mal nur die erste. Dazu noch eine Sache: Die Identifikation des Templates sollte รผber die UID laufen und nicht รผber einen Anzeigenamen:
$CMS_FOR(for_sibling, #global.page.parent.parent.getChildren(class("de.espirit.firstspirit.access.store.pagestore.Page"), true).filter(x -> x.template.uid == "joboffers"))$
$CMS_FOR(ref, for_sibling.getIncomingReferences())$
$CMS_IF(ref.isType(2))$
var refJobboerse = "$CMS_REF(ref.getReferencedElement(), templateSet: "JSON")$";
$CMS_SET(void, #for.BREAK)$
$CMS_END_IF$
$CMS_END_FO$
$CMS_END_FOR$
Die รคuรere Schleife sollte man dann vermutlich auch unterbrechen, weil du ja sonst die Variable mehrfach geprintet bekommst, wenn es mehrere Brรผderelemente mit diesem Template gibt
Gruร
Felix
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
du arbeitest da gerade auf dem Pagestore - also im Inhaltebereich (grรผn). Solche Seiten haben aber keine Links, sondern nur Seitenreferezen aus dem Sitestore (blau).
Klingt fรผr mich im ersten Moment auch konzeptionell eher fragwรผrdig Siblings im pagestore anzuschauen, da die Ordner im pagestore nichts mit der spรคteren Struktur zu tun haben. Solltet ihr eigtl. den sitestore meinen, dann mรผsstest du #global.page nur durch #global.node ersetzen und bei der Templateabfrage Bruderelement.page.template nehmen. Sollte tatsรคchlich der pagestore korrekt sein, dann mรผsstest du noch die eingehenden Referenzen der Seite durchsuchen. Dabei mรผsst ihr bedenken, dass eine Page mehrere Seitenreferenzen haben kann. Im Beispiel nehme ich mal nur die erste. Dazu noch eine Sache: Die Identifikation des Templates sollte รผber die UID laufen und nicht รผber einen Anzeigenamen:
$CMS_FOR(for_sibling, #global.page.parent.parent.getChildren(class("de.espirit.firstspirit.access.store.pagestore.Page"), true).filter(x -> x.template.uid == "joboffers"))$
$CMS_FOR(ref, for_sibling.getIncomingReferences())$
$CMS_IF(ref.isType(2))$
var refJobboerse = "$CMS_REF(ref.getReferencedElement(), templateSet: "JSON")$";
$CMS_SET(void, #for.BREAK)$
$CMS_END_IF$
$CMS_END_FO$
$CMS_END_FOR$
Die รคuรere Schleife sollte man dann vermutlich auch unterbrechen, weil du ja sonst die Variable mehrfach geprintet bekommst, wenn es mehrere Brรผderelemente mit diesem Template gibt
Gruร
Felix
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Felix,
#global.node hatte ich zuerst versucht. Das Bruderelement.page hatte mir gefehlt. Danke fรผr den Tipp.
Natรผrlich habe ich auch deinen Tipp mit der UID beherzigt und den BREAK eingebaut.
$CMS_FOR(Bruderelement,#global.node.parent.getChildren())$
$CMS_IF(!Bruderelement.isFolder())$
$CMS_IF(Bruderelement.page.template.uid.equals("jobs"))$
var RefJobboerse ='$CMS_REF(Bruderelement, templateSet:"JSON")$'
$CMS_SET(void, #for.BREAK)$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
Den Filter kann man sicher auch mal gebrauchen.
isType(2) sieht Interessant aus? Wo finde ich den eine รbersicht welcher int Wert welcher Typ ist?
Beste Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
die zugehรถrigen Nummern der Referenztypen findest du hier:
Constant Field Values (FirstSpirit Access-API)
Und bitte bitte mach aus Bruderelement einen englischen Namen in lower/camel case :smileygrin:
Viele Grรผรe
Felix

