Skip to main content

Error resolving reference - reference to pagestore not allowed in generation

Comments

3 comments

  • Zendesk API User
    Author: felix_reinhold - 7/31/2021 14:06

    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 :smileywink:

    Gruß

    Felix

    0
  • Zendesk API User
    Author: Mchrobok - 8/3/2021 12:33

    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.:smileywink:

    $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

    0
  • Zendesk API User
    Author: felix_reinhold - 8/3/2021 15:18

    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

    0

Please sign in to leave a comment.