- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Generierte Sprachen im Template herausfinden
Hallo,
ich versuche in einem Template herauszufinden, ob eine Seite mit dem aktuell laufenden Generierungsjob in einer bestimmten Sprache X generiert wird oder nicht.
$CMS_FOR(for_lang,#global.project.languages)$
$CMS_IF(for_lang != #global.language && for_lang.shouldGenerate() && #global.page.isTranslated(for_lang))$
<a href="$CMS_REF(#global.node,lang:for_lang)$<%= detailParam %>"><img src="$CMS_REF(media:"lang_"+for_lang.abbreviation.toLowerCase,res:"flag_square_w29h19")$"></a>
$CMS_END_IF$
$CMS_END_FOR$
In unserem Projekt ist es allerdings so, dass sozusagen mehrere Microsites in einem FS-Projekt verwaltet werden und es im Pagestore teilweise Seiten gibt, die auf mehreren Microsites verwendet werden. Dadurch kann es sein, dass eine Seite in deutsch, franzรถsisch und schwedisch รผbersetzt ist, aber auf einer bestimmten Microsite nur Deutsch/Franzรถsisch generiert wird. Der einzige Ort, an dem zuverlรคssig definiert ist welche Sprachen im Rahmen einer Microsite verwendet werden, ist die Einstellung am entsprechenden Generierungstask in der Auftragsverwaltung.
Der oben dargestellte Code ist fรผr den Sprachwechsler. Der funktioniert leider so nicht perfekt, da lang.shouldGenerate() sich nicht auf den Job sondern auf allgemeine Projekteinstellungen bezieht. Dadurch wรผrde dann eine schwedisch รผbersetzte Seite auf einer Microsite die kein schwedisch generiert trotzdem den Link fรผr die schwedische Sprache bekommen. Das wiederum erzeugt einen 404, da die Seite auf schwedisch nicht generiert wird.
Und nun zur Frage: Hat jemand eine Idee, wie ich im Template herausfinden kann, ob der aktuelle Generierungstask eine bestimmte Sprache generiert oder nicht?
Fรผr die Preview kรถnnte ich noch eine Weiche einbauen und dann einfach dort alle anzeigen, aber im Rahmen eines ScheduleContext wรผrde ich es gern richtig lรถsen.
Danke & Gruss
Michel
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
du kannst im Template eben diese Information aus dem Generierungsauftrag auslesen (das funktioniert natรผrlich nicht fรผr die Preview).
$CMS_FOR(for_lang,#global.project.languages)$
$CMS_IF(for_lang != #global.language && for_lang.shouldGenerate() && #global.page.isTranslated(for_lang))$
$CMS_IF(#global.preview || #global.scheduleContext.task.getGenerateFlag(for_lang, #global.templateSet))$
<a href="$CMS_REF(#global.node,lang:for_lang)$<%= detailParam %>"><img src="$CMS_REF(media:"lang_"+for_lang.abbreviation.toLowerCase,res:"flag_square_w29h19")$"></a>
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
oder in Form eines Lambda Ausdrucks:
$CMS_IF(#global.preview)$
$CMS_SET(set_langs, #global.project.languages.filter(x->x != #global.language && x.shouldGenerate() && #global.page.isTranslated(x))$
$CMS_ELSE$
$CMS_SET(set_langs, #global.project.languages.filter(x->#global.scheduleContext.task.getGenerateFlag(x, #global.templateSet) && x != #global.language && x.shouldGenerate() && #global.page.isTranslated(x))$
$CMS_END_IF$
$CMS_IF(set_langs.size() > 0)$
...
$CMS_FOR(for_lang, set_langs)$
<a href="$CMS_REF(#global.node,lang:for_lang)$<%= detailParam %>"><img src="$CMS_REF(media:"lang_"+for_lang.abbreviation.toLowerCase,res:"flag_square_w29h19")$"></a>
$CMS_END_FOR$
...
$CMS_END_IF$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
du kannst im Template eben diese Information aus dem Generierungsauftrag auslesen (das funktioniert natรผrlich nicht fรผr die Preview).
$CMS_FOR(for_lang,#global.project.languages)$
$CMS_IF(for_lang != #global.language && for_lang.shouldGenerate() && #global.page.isTranslated(for_lang))$
$CMS_IF(#global.preview || #global.scheduleContext.task.getGenerateFlag(for_lang, #global.templateSet))$
<a href="$CMS_REF(#global.node,lang:for_lang)$<%= detailParam %>"><img src="$CMS_REF(media:"lang_"+for_lang.abbreviation.toLowerCase,res:"flag_square_w29h19")$"></a>
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
oder in Form eines Lambda Ausdrucks:
$CMS_IF(#global.preview)$
$CMS_SET(set_langs, #global.project.languages.filter(x->x != #global.language && x.shouldGenerate() && #global.page.isTranslated(x))$
$CMS_ELSE$
$CMS_SET(set_langs, #global.project.languages.filter(x->#global.scheduleContext.task.getGenerateFlag(x, #global.templateSet) && x != #global.language && x.shouldGenerate() && #global.page.isTranslated(x))$
$CMS_END_IF$
$CMS_IF(set_langs.size() > 0)$
...
$CMS_FOR(for_lang, set_langs)$
<a href="$CMS_REF(#global.node,lang:for_lang)$<%= detailParam %>"><img src="$CMS_REF(media:"lang_"+for_lang.abbreviation.toLowerCase,res:"flag_square_w29h19")$"></a>
$CMS_END_FOR$
...
$CMS_END_IF$

