dluettel
Elite Observer

Ausgabe der Section im Skript

Jump to solution

Hallo Zusammen,

ich muss von einem bestimmten Inhaltsbereich die ganzen Absätze ausgeben. Dies muss ich in einem Skript tun:

Body body = currentPageRef.getPage().getBodyByName("category_promobox");

Bisher finde ich keine gute Möglichkeit dies zu tun. Habt ihr eine Idee? ICh brauche dazu den Inhalt aus dem HTML-Ausgabekanal.

Sowas ähnliches wie $CMS_VALUE(#global.page.body("category_promobox"))$ Nur eben aufrufbar in einem Skript von einer beliebigen Seite.

Gruß

Daniel Lüttel

15 Replies
hoebbel
Crownpeak employee

Hallo Daniel,

ich muss das leider direkt in der Absatzvorlage machen

Dann ist es zu spät für die Sprachumschaltung, fürchte ich.

Da hilft es dann nur, sich die Daten direkt zu holen, also zum Beispiel so:

$CMS_VALUE(#global.section.getFormData().get(#global.project.language("NL_NL"),"st_text").get())$

Also von dem aktuellen Absatz (#global.section) aus dem Formdata Objekt die entsprechende Eingabekomponente in der gewünschten Sprache.

Das funktioniert zumindest bei einfachen Eingabekomponenten. Wenn Du aber geschachtelte Eingabekomponenten hast, dann kann es notwendig sein, zusätzlich die Sprache umzuschalten (z.B. Links in einem DOM, oder eine FS_LIST, FS_INDEX oder FS_CATALOG Eingabekomponente, ....)

Viele Grüsse aus Dortmund,

  Holger

0 Kudos

Hallo Holger,

schade. Genau das wollte ich vermeiden, weil das richtig Aufwand bedeutet im Projekt.

Oder gibt es einen anderen Ansatz um in einem Projekt 3 Mastersprachen zu definieren? Also Inhalt aus nl_BE soll den Inhalt der Absatzvorlage aus NL_NL erben und DE_AT soll z.B. den Inhalt aus der Absatzvorlage DE_DE erben können.

Beste Grüße

Daniel Lüttel

0 Kudos

Hi Daniel,

Was Du noch versuchen könntest wäre die Ausgabe des kompletten Inhalts, also z.B.

$CMS_VALUE(#global.page.body("category_promobox"))$

zu ersetzen durch eine Iteration per $CMS_FOR$ und dann die einzelnen Absätze (aus der Seitenvorlage heraus) auszugeben mit $CMS_VALUE(set_section)$.

Um dieses CMS_VALUE herum könntest Du dann die von Holger beschriebene Sprachumschaltung machen. Die Logik welche Sprache denn nun benutzt werden soll, müsste dann natürlich in die Seitenvorlage, hier kannst Du ggf. ganz gut mit Lambdas arbeiten.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

wenn ich den folgenden Code eingebe, erhalte ich 2-mal den kompletten Inhaltsbereich für die Sprache NL_NL.

$CMS_SET(set_section, #global.page.body("content").getChildren())$

$CMS_SET(currentLanguage,#global.language)$

$CMS_SET(#global.language,#global.project.language("NL_NL"))$

$CMS_FOR(section, set_section)$

          $CMS_VALUE(section)$

$CMS_END_FOR$;

$CMS_SET(#global.language,currentLanguage)$

Ist das deine Lösung? Ich verstehe hierbei nur nicht, warum ich 2 mal den gleichen Body ausgebe.

Gruß

Daniel Lüttel

0 Kudos

Hallo Daniel,

aber die "normale" Ausgabe per $CMS_VALUE(#global.page.body(...))$ hast Du rausgenommen oder?

Ich weiß es aus dem Kopf gerade nicht genau, aber es kann sein dass die Sprachhaken "Absatz in der Ausgabe erzeugen" beim Iterieren nicht automatisch ausgewertet werden. Kann es sich bei den zusätzlichen Absätzen um solche handeln, die einen deaktivierten Sprachhaken haben?

Vielleicht hilft Dir der Template-Debugger weiter, der doppelten Ausgabe auf die Spur zu kommen...

Viele Grüße

Michael

Hallo Michael,

irgendwer hat noch ein CMS_VALUE in die Absatzvorlage geschrieben beim entwickeln. 😞

Also die Lösung läuft jetzt.

Super. Danke dir.

Gruß

Daniel Lüttel

0 Kudos