Ausgabe der Section im Skript
Author: dluettel
Publication Date: 9/13/2016 16:23
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
-
Author: fyf - 9/14/2016 7:54
Hi Daniel,
könnte vielleicht das hier dir helfen?
page.getChildren(Section.class, true); // Liefert dir recursiv alle Sections eines Elements vom Typ Page.
(Siehe API ): de.espirit.firstspirit.access.store.pagestore.Page
getChildren Listable getChildren(@NotNull Class type,boolean recurse)
Get the element's children that are instances of the given type.
Parameters: type - The type to find instances of.
recurse - If true, recursively collects children.
Returns: A listable on matching children.Gruß
Fabrice
0 -
Author: mbergmann - 9/14/2016 9:09
Hallo Daniel,
von wo und wie wird das Skript denn aufgerufen? Ist das ein Renderskript?
Viele Grüße
Michael
0 -
Author: dluettel - 9/14/2016 11:13
Hallo Michael,
dass Skript ist in einer Seiten eingebunden und die Seite soll in CC angezeigt werden.
Ich möchte halt direkt den HTML-Code aus dem Ausgabekanal ausgeben können.
Hintergrund ist der folgende:
Ich hole mir über das Skript ein andere Sprache (z.B. EN) als die die gerade aktiv (z.B. DE) ist und möchte nun eben den kompletten Inhalt eines bestimmten Inhaltsbereichsausgaben, aber eben nicht in der aktuellen Sprache (z.B. DE), sondern in der anderen Sprache (z.B. EN).
Gruß
Daniel
0 -
Author: dluettel - 9/14/2016 11:15
Hallo Fabrice,
die Liste alle Sections erhalte ich direkt, aber ich möchte direkt in Inhalt der Section ausgeben können.
In FS kann ich das ja direkt mit machen:
$CMS_VALUE(#global.page.body("category_promobox"))$
In einem Skript gibt es die Funktion body nicht für eine Page.
Gruß
Daniel
0 -
Author: fyf - 9/14/2016 12:46
Hi Daniel,
vielleicht hatte ich falsch verstanden.
Wenn du einige Eigenschaften von der Section "category_promobox" ausgeben möchte.
Geht es so:
$CMS_VALUE(#global.page.body("category_promobox").name)$ // gibt dir den Name deiner Section aus
$CMS_VALUE(#global.page.body("category_promobox").id)$ // gibt dir die ID der Section aus
usw...usw... Als du geht erstmals über die Seite, danach in der Section, wie du es bisher gemacht hat, sobald du deine Section hat, kannst dann dort die Funktionen, die zu einer Section gehören verwenden.
Also wenn es um die Ausgabe des Inahltes der Section geht, dann reicht deine definierte Ausgabe schon
$CMS_VALUE(#global.page.body("category_promobox"))$
Dabei musst du achten, dass der tatsächtliche Inhalt in zum Beispiel in einem Absatz, die du in "category_promobix" angelegt hast, richtig in der HTML-Ausgabe-Kanal ausgegeben wird...
(Siehe Doku)
Liefert einen Inhaltsbereich zurück. Der Ausdruck wird häufig genutzt, um die Inhalte der Absätze eines Inhaltsbereichs auszugeben. Als BEZEICHNER ist der Bezeichner eines Inhaltsbereichs anzugeben.Ich hoffe, dass dir weiterhelfen konnte... Sonst kannst du gerne noch kurz beschreiben wie deine Ansatz ist, dann kann ich wieder eine Idee vorschlagen...
Gruß
Fabrice
0 -
Author: fyf - 9/14/2016 13:38
Skripting :-)
0 -
Author: dluettel - 9/14/2016 15:20
HAllo Fabrice,
vielen dank.
DIe Möglichkeit dachte ich mir schon, aber ich wollte ungerne mein HTML mit den Inhalten zusammenbringen, sondern dachte, dass es da eine coole Ftunktion gibt.
So muss ich ja jetzt für jede definierte Absatzvorlage inhalt und Felder zusammen bringen.
so ein direkte Funktion mit Verheirate Inhalt und Feldinhalte suche ich.
GRuß
DAniel
0 -
Author: hoebbel - 9/23/2016 13:33
Hallo Daniel,
Hintergrund ist der folgende:
Ich hole mir über das Skript ein andere Sprache (z.B. EN) als die die gerade aktiv (z.B. DE) ist und möchte nun eben den kompletten Inhalt eines bestimmten Inhaltsbereichsausgaben, aber eben nicht in der aktuellen Sprache (z.B. DE), sondern in der anderen Sprache (z.B. EN).
Funktioniert da nicht einfach das Umschalten der sprache im normalen Template Code und anschließendes Ausgaben des Body Bereichs. Man muss nur unbedingt dran denken, danach wieder zurückzuschalten :smileywink:
Also zum Beispiel so:
$CMS_SET(currentLanguage,#global.language)$
$CMS_SET(#global.language,#global.project.language("EN"))$
$CMS_VALUE(#global.page.body("category_promobox"))$
$CMS_SET(#global.language,currentLanguage)$Viele Grüsse aus Dortmund,
Holger
0 -
Author: dluettel - 9/23/2016 15:01
Hallo Holger,
ich muss das leider direkt in der Absatzvorlage machen. ;-) Weil jede Absatzvorlage theoretisch eine andere Sprache haben kann.
Dieser Absatz soll eigentlich die Sprache NL_NL ausgeben, weil leider passiert das nicht. Sondern wieder nur die aktuelle Sprache die gerade angezeigt wird.
$CMS_SET(currentLanguage,#global.language)$
$CMS_SET(lang_script)$$CMS_RENDER(script:"lang_check", st_inherit:"true")$$CMS_END_SET$
$--Liefert mir als String lang_script=NL_NL zurück --$
$-- Sprache holen --$
$CMS_SET(#global.language,#global.project.language(lang_script.toString().toUpperCase()))$
$-- Sprache NL_NL wurde gesetzt--$
$-- Gibt die Sprache NL_NL aus--$
$CMS_VALUE(#global.language)$
$-- Sollte die Sprache von NL ausgeben --$
$CMS_VALUE(st_text)$
$-- Sprache zurücksetzen --$
$CMS_SET(#global.language,currentLanguage)$
Gruß
Daniel
0 -
Author: hoebbel - 9/26/2016 7:29
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 -
Author: dluettel - 9/26/2016 8:56
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 -
Author: mbergmann - 9/26/2016 10:10
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 -
Author: dluettel - 9/26/2016 10:54
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 -
Author: mbergmann - 9/26/2016 12:01
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
0 -
Author: dluettel - 9/26/2016 12:20
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
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
15 Kommentare