dluettel
Elite Observer

FS_CATALOG in CMS_FUNCTION "Navigation" ausgeben

Hallo Zusammen,

ich versuche gerade, einen FS_CATALOG in einer CMS_FUNCTION ausgegeben zu lassen, aber leider klappt das nicht.

Hat jemand eine Idee?

<CMS_FUNCTION name="Navigation" resultname="fr_pt_sitemap">

<CMS_PARAM name="expansionVisibility" value="all"/>

    <CMS_PARAM name="siteMap" value="0" />

    <CMS_PARAM name="suppressEmptyFolders" value="1" />

    <CMS_PARAM name="wholePathSelected" value="0" />

<CMS_ARRAY_PARAM  name="unselectedHTML">

<CMS_ARRAY_ELEMENT index="0..4"><![CDATA[

*

$CMS_VALUE(#nav.ref.page.getFormData().get(null, "pt_teaser_items").get().class.name,default:"")$

$--de.espirit.firstspirit.generate.values.CatalogConverter$Delegate --$

*

##

$CMS_FOR(item,#nav.ref.page.getFormData().get(null, "pt_teaser_items").get())$

$CMS_VALUE(item.class.name,default:"")$

$--de.espirit.firstspirit.client.access.editor.lists.CatalogImpl--$

Wie komme ich jetzt an den Inhalt von dem CATALOG dran.

$CMS_END_FOR$

##

]]></CMS_ARRAY_ELEMENT>

</CMS_ARRAY_PARAM>  

</CMS_FUNCTION>

Gruß

Daniel

0 Kudos
9 Replies
felix_reinhold
Returning Responder

Hi Daniel,

da das item ja scheinbar ein Catalog ist könntest du da ja einfach drüber iterieren:

$CMS_FOR(catalog,#nav.ref.page.getFormData().get(null, "pt_teaser_items").get())$ 

     $CMS_FOR(card, catalog)$

          $CMS_VALUE(card.item.get(null, "st_deinFedImCatalog").get())$

     $CMS_END_FOR$

$CMS_END_FOR$ 

Auch wenn es mich etwas wundert, dass man an der Stelle erst diesen CatalogConverter bekommt :smileyconfused:

EDIT: Das Verhalten ist m.E. nach tatsächlich etwas seltsam, da der  de.espirit.firstspirit.generate.values.CatalogConverter$Delegate eigtl bereits eine Liste aus Cards extended und somit auch ein direktes iterieren darüber funktionieren müsste (also dir eine Card geben sollte und keinen Catalog).

Beste Grüße

Felix

0 Kudos

Hallo Felix,

dass klappt leider nicht. Das wäre der Catalog bei den Seiteninformationen.

      <FS_CATALOG name="pt_teaser_items" useLanguages="yes">

        <LANGINFOS>

          <LANGINFO lang="*" label="News Item"/>

        </LANGINFOS>

        <TEMPLATES type="section"/>

      </FS_CATALOG>

Ich möchte ja quasi direkt den Inhalt aus der Section ausgeben, welche dort angegeben wurde. In Prinzip das.

$CMS_FOR(catalog,#nav.ref.page.getFormData().get(null, "pt_teaser_items").get())$ 

    $CMS_FOR(card, catalog)$

          +#+$CMS_VALUE(card.class.name)$+#+

    $CMS_END_FOR$

$CMS_END_FOR$ 

Aber da bekomme ich nichts.

Gruß

Daniel

0 Kudos

Hi Daniel,

kommt er da denn überhaupt in die zweite Schleife rein? Vermutlich ja nicht, wenn er nix ausgibt.

Standardmäßig müsste es ja so funktionieren:

$-- Ganzen catalog ausgeben --$

$CMS_VALUE(#nav.ref.page.getFormData().get(null, "pt_teaser_items").get())$

oder

$-- Jede Card einzeln ausgeben --$

$CMS_FOR(card,#nav.ref.page.getFormData().get(null, "pt_teaser_items").get())$  

    $CMS_VALUE(card)$

$CMS_END_FOR$

Wenn das nicht funktioniert würde ich ja fast mal beim Support nachfragen.

Wenn hier catalog wirklich ein Catalog ist und trotzdem nichts rauskommt wäre dasja auch entweder ein Fehler, oder der Catalog ist einfach leer:

$CMS_FOR(catalog,#nav.ref.page.getFormData().get(null, "pt_teaser_items").get())$   

    $CMS_FOR(card, catalog)$ 

          +#+$CMS_VALUE(card.class.name)$+#+ 

    $CMS_END_FOR$ 

$CMS_END_FOR$  

Im Zweifelsfall mal wenigstens noch catalog.size() ausgeben lassen.

Gruß

Felix

0 Kudos

Hallo Felix,

dass hatte ich schon alles einmal probiert. Ich habe jetzt ein Ticket bei e-Spirit aufgemacht.

Ich gebe Rückmeldung, sobald alles durch ist.

Vielen Dank.

0 Kudos

Hallo Felix,

ich habe es jetzt herausgefunden. Es lag daran, dass ich im falschem Kanal war.

Es klappt jetzt wie folgt:

$CMS_FOR(myItem,#nav.ref.page.formData.pt_teaser_items.items)$

$CMS_VALUE(myItem)$

$CMS_END_FOR$

Allerdings habe ich noch das Problem, dass ich das in einer JSON Struktur ausgeben muss und somit die Sachen Escapen müsste, aber das klappt auch nicht.

Gruß

Daniel Lüttel

0 Kudos

Hallo Daniel,

wie und wo erfolgt denn die Ausgabe als JSON?

Eventuell hilft die dir Funktion "json()" weiter, die im Ausgabekanal zu Verfügung steht. Für Standard-Elemente aus FirstSpirit werden Standard-Ausgaben erzeugt. Diese kann man aber individuell anpassen.

Eine umfassendere Beschreibung findest du in unserer Online-Dokumentation.

Beste Grüße

Stefan

0 Kudos

Hallo Stefan,

leider arbeitet der Kunde noch auf der 2018-08 und deshalb ist die Funktion noch nicht verfügbar.

Ich muss doch irgendwie den Catalog in der CMS_FUNCTION (Navigation) rendern lassen können.

Oder hat jemand ein Skript, womit ich mir einfach die Navi komplett ausgeben lasse, aber ohne eine CMS_FUNCTION (Navigation)


GrußDaniel Lüttel

0 Kudos

Hallo Daniel,

wenn es nur noch um die JSON Struktur geht dann kannst du das doch auch einfach manuell zusammen basteln. Dann hast du das escapen und die Auswahl der Felder auch selbst in der Hand.

Das kannst du ja auch schön in das Template der Card auslagern. Ist m. E. nach auch immer noch ein valides Vorgehen zum Erstellen der JSONs, falls man Abweichungen hat, die die Standardausgabe von json()/toJSON() nicht abdeckt.

Ist denn in 2018-08 auch das "toJSON" auf den anderen Klassen noch nicht vorhanden?

Viele Grüße

Felix

0 Kudos

Hallo Felix,

ich wollte ungerne HTML und JSON doppelt pflegen. Das war der Gedanke.

Gruß

Daniel Lüttel

0 Kudos