dspieser
Returning Observer

Datenquelle / FS_CATALOG mit Absatztemplates

Hallo,

irgendwo versteh ich es nimmer.
Kann mir bitte jemand erklären was der Unterschied zwischen diesen beiden Ausgaben im CaaS-Kanal der selben Komponente ist?

Ich habe bei einer Datenquelle pro Datensatz eine FS_CATALOG die Absätze enthält.

Nun wollte ich im CaaS-Kanal der Absätze die JSON Ausgabe bereitstellen um in dem Datensatz Template lediglich die Ausgabe der Absätze machen.

Die Absätze pro Fall einzel ausgeben geht. Da muss ich dann aber in jedem Fall immer prüfen welches Template das ist.

Bsp Absatz.:

Absatz:

$CMS_SET(setSectionObj, {"":""})$

$CMS_SET(void, setSectionObj.clear())$

$CMS_SET(void, setSectionObj.put("content", "Text Bild"))$

$CMS_VALUE(setSectionObj.toJSON)$

Datensatz Template:

$CMS_IF(!ct_contentlist.empty)$

     $CMS_FOR(content,ct_contentlist)$

          $CMS_SET(setContent, content)$

          $CMS_SET(void,setContentList.add(setContent))$

     $CMS_END_FOR$

$CMS_END_IF$

liefert: "de.espirit.firstspirit.generate.IdentifiableCatalogCard@5a4952b1"

und 

$CMS_IF(!ct_contentlist.empty)$

     $CMS_FOR(content,ct_contentlist)$

          $CMS_VALUE(content)$

     $CMS_END_FOR$

$CMS_END_IF$

liefert: {"content":"Text Bild"}

ganz am Ende die letztendliche Ausgabe:

$CMS_VALUE(setJsonArticleObj.toJSON)$

ich bräuchte es aber in meiner Json und nicht einfach als Ausgabe.

Vielleicht steh ich ja auf dem Schlauch, aber habe schon mehrere Ausgaben versucht..

Danke schon mal für eure Denkanstöße

Grüße

Dietmar

0 Kudos
13 Replies
dspieser
Returning Observer

Hallo Holger,

Danke für deine Zeit.

Ich habe es jetzt komplett umgebaut.

Die Verweisvorlagen und die Absatzvorlagen ohne FS_CATALOG habe ich mit $CMS_SET(set_LIST,{:}) umgesetzt und alle anderen in etwa so:

{

"article_id": "$CMS_VALUE(#row.fs_id)$",

"article_link": "$CMS_VALUE(setLinktoArticle.toString().trim())$",

"mainObject": $CMS_VALUE(setMainObj.toJSON)$,

$CMS_IF(!ct_startdate.empty)$

      "startdate": "$CMS_VALUE(ct_startdate)$",

$CMS_END_IF$

$CMS_IF(!ct_enddate.empty)$

      "enddate": "$CMS_VALUE(ct_enddate)$",

$CMS_END_IF$

"article_title": "$CMS_VALUE(#row.ContentTitle.toString().replaceAll("®","<sup>®</sup>"))$",

"article_titletag": "$CMS_VALUE(#row.ContentTitle.toString().trim)$",

"article_shortdescription": $CMS_VALUE(setShortDescription.toJSON)$,

"article_description": $CMS_VALUE(setDescription.toJSON)$,

"content": $CMS_VALUE(setContentList)$

}

im content kommen dann die Absätze raus.

Bsp.:

"content": [{"template": "section00","templatename": "01. Text-Bild","basicLayout": {"highlighted": "normal","marginBottom": "mb-3"},"sectionLayout": {"basicLayout": "01","imageSide": "image_left","slideText": "false","textWidthRestrict": "false","wrapText": "true"},"content": {"teaserText": "","sectionText": "<p>Diese Europameisterschaft der Berufe soll die besondere Rolle des Handwerks als Stütze der EU-Wirtschaftskraft betonen und das Ansehen des Handwerks stärken. Im Mittelpunkt stehen junge Handwerker und ihre Leistungen. Denn ein ganz konretes Ziel ist es, mehr junge Menschen für einen der etwa 130 Handwerksberufe zu begeistern. Würth ist Mitglied der WorldSkills Germany und unterstützt als Sponsor auch die EuroSkills, die Ende September in Budapest zum sechsten Mal ausgetragen wurden.</p>","mediaList": []}}, ...

Das scheint so zu funktionieren und ich kann erstmal weiter machen.

Schönen Abend.

Gruß

Dietmar

0 Kudos
hoebbel
Crownpeak employee

Hallo Dietmar,

Dank für die positive Rückmeldung. Ich bin froh, dass Du das Problem lösen konntest Smiley Happy

Bezüglich JSON fällt mir noch der Hinweis ein, dass es einen JSON Präsentationskanal gibt, der (in der Vorschau) prüft, ob der Inhalt des Kanals gültiges JSON ist und wenn nicht, die entsprechenden Stellen markiert. Falls Du das noch nicht wusstest [und deine FirstSpirit Version nicht sehr alt ist], hilft das evtl. auch.

Präsentationskanäle kann man über den ServerManager->Projekt->Eigenschaften->Vorlagensätze-><Vorlagensatz für JSON>->und dort in der Dropdown Box Präsentationskanal auswählen. Wenn es dort einen Kanal JSON gibt, hat der die entsprechenden Eigenschaften.

Bei älteren FirstSpirit Versionen muss dann noch die Option Template Inspection ausgeschaltet bleiben (führt zu invalidem JSON), in aktuellen Versionen wird die ignoriert.

Auch Dir einen schönen Abend

Holger

0 Kudos
dspieser
Returning Observer

Guten Morgen Holger,

danke, die Auswahl JSON gibt es bei unserer Version wohl noch nicht.

Das werde ich aber nach dem Update , das wir hoffentlich bald mal machen, dann testen.

Grüße

Dietmar

0 Kudos
hoebbel
Crownpeak employee

Guten Morgen Dietmar,

den JSON Kanal gibt es ab der FirstSpirit Version 2019-08 und den Validator selber seit 2019-01.

Wenn Ihr eine FirstSpirit Version dazwischen einsetzt, kannst Du den Validator so nutzen:

ServerManager->Server/Eigenschaften->Präsentationskanäle->hinzufügen

Im Dialog dann einen sinnvollen Namen und eine Standard Dateierweiterung vergeben (z.B. JSON-Channel & json) und unter Nachbearbeitung den JSON Validator auswählen.

Für die Aktion werden Server-Admin Rechte benötigt.

Viele Grüße,

Holger

0 Kudos