andreasphilippi
I'm new here

Fehler beim Rendern eines HTML Channels in XML Channel

Jump to solution

Hallo,

ich habe einen Fall, in dem ich den HTML-Channel einer Liste von Link-Templates als CDATA in den XML-Channel eines anderen Elements packen muss. Die Liste von Link-Templates erhalten wir über das Formular. Ich habe es jetzt mit folgendem Code bewerkstelligen können, dass der HTML-Channel der Link-Templates in das XML übertragen wird:

$CMS_IF(pt_sidebarSections.size > 0)$

  $CMS_FOR(for_sidebarSection, pt_sidebarSections)$

    <field name="teasers">

      <![CDATA[

        $CMS_VALUE(for_sidebarSection.item.template.templateDocument(#global.project.templateSets[0]))$

      ]]>

    </field>

  $CMS_END_FOR$

$CMS_END_IF$

Das gewünschte Ergebnis wäre irgendwas in dieser Art:

<field name="teasers">

  <![CDATA[

    <div> ... </div>

  ]]>

</field>

Tatsächlich ist der Inhalt von CDATA aber immer leer.

Der HTML-Channel der Sidebar-Sections sieht so aus:

$CMS_SET(set_pageData, lt_reference.get.page.formData)$

$CMS_SET(categoryHeadline, if(!set_pageData.pt_categoryHeadline.isNull && !st_showCategoryHeadline.isNull && st_showCategoryHeadline, set_pageData.pt_categoryHeadline.value.name.convert2, ""))$

$CMS_SET(set_teaserText, set_pageData.pt_teaserText)$

$CMS_RENDER(

  template: "render_teaser_template",

  prm_isCard: true,

  prm_image: if(st_teaserType != "teaserText", set_pageData.pt_image, ""),

  prm_isVideo: if(!set_pageData.pt_isVideo.isEmpty, true, false),

  prm_videoURL: if(!set_pageData.pt_isVideo.isEmpty, set_pageData.pt_video.formData.lt_url, ""),

  prm_url: ref(lt_reference),

  prm_sectionId: lt_reference.section.id,

  prm_urlText: lt_text,

  prm_isTarget: if(!set_pageData.pt_isTarget.isEmpty, set_pageData.pt_isTarget, false),

  prm_isOverflow: set_pageData.pt_teaserText.isEmpty,

  prm_isExternal: false,

  prm_categoryHeadline: "",

  prm_headline: set_pageData.pt_teaserHeadline,

  prm_text: if(st_teaserType != "teaserMedia", set_teaserText, ""),

  prm_renderWrapper: false

)$

Ich konnte das Problem nun dahingehend eingrenzen, dass offenbar beim Aufruf von $CMS_VALUE(for_sidebarSection.item.template.templateDocument(#global.project.templateSets[0]))$ die $CMS_... Sachen im HTML-Channel der Sidebar-Sections nicht ausgeführt werden oder keinen Inhalt produzieren. Wenn ich in der Sidebar-Section ein <h1>Test</h1> oder ähnliches ergänze, taucht das in der CDATA auf.

Hat jemand eine Idee, wo das Problem liegen könnte?

Danke!

0 Kudos
1 Solution

Accepted Solutions

Wir haben es bei uns im Projekt so gelöst, sofern Inhalts mit "wandern" müssen, diese im Root-Context zu schreiben (via Unique ID) und diese dann im anderen TemplateSet auszulesen und auszuwerten.

VG Marcel

View solution in original post

0 Kudos
6 Replies
MarsDD
Occasional Observer

Hi,

Formularinhalte werden beim TemplateSet-Hopping vergessen 😕

VG Marcel

0 Kudos

Das erklärt das natürlich, schade! Also gibt es keine Möglichkeit, den Fall irgendwie umzusetzen?

0 Kudos

Wir haben es bei uns im Projekt so gelöst, sofern Inhalts mit "wandern" müssen, diese im Root-Context zu schreiben (via Unique ID) und diese dann im anderen TemplateSet auszulesen und auszuwerten.

VG Marcel

0 Kudos

Hallo Marcel,

könntest du ausprobieren, ob du mittels $CMS_VALUE im HTML-Channel der Sidebar-Section einen beliegen Wert ausgeben kannst, der dann im XML angezeigt wird? Ich habe die Vermutung, dass das $CMS_RENDER das eigentliche Problem ist. Das Rendern erfolgt nämlich erst, wenn der Inhalt wirklich ausgeben wird und ich bin mir nicht sicher, ob dies bei einem Aufruf über den XML Kanal der Fall ist.

Falls meine Vermutung richtig ist, kann z.B. ein toString helfen die Ausgabe "zu erzwingen".

Grüße

Jan

0 Kudos

Hallo Andreas,

benötigst Du noch weitere Hilfe oder haben Dir die Antworten von Jan oder Marcell bereits geholfen? 
In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Martin

0 Kudos

So haben wir es dann letztlich auch gelöst. Danke für den Tipp!

0 Kudos