- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
CMS_INPUT_DOM in anderer Sprache ausgeben
Hallo,
ich habe ein mehrsprachiges CMS_INPUT_DOM. Wenn in der aktuellen Sprache kein Inhalt vorhanden ist, soll der Inhalt einer anderen Sprache ausgegeben werden. Wie mache ich das?
Ich habe es so versucht aber erhalte immer nur ein leeres Ergebnis
$CMS_SET(actualLanguage,#global.language)$
$CMS_SET(break,false)$
$CMS_SET(text)$
$CMS_IF(st_text.isEmpty)$
$-- if there is no content in the current language, loop through all av. languages to find any content --$
$CMS_FOR(lang, #global.project.languages)$
$CMS_IF(break==false)$
$CMS_SET(#global.language,lang)$
$CMS_IF(!st_text.isEmpty)$
$-- found something --> store and break loop --$
$CMS_VALUE(st_text)$
$CMS_SET(break,true)$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_ELSE$
$CMS_VALUE(st_text+"...")$
$CMS_END_IF$
$CMS_END_SET$
$CMS_SET(#global.language,actualLanguage)$
$---------------------------------------$
$CMS_VALUE("'"+text+"'")$
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Es geht nur dirty:
1. Merken der aktuellen Projektsprache
2. Umschalten der aktuellen Projektsprache in die gewรผnschte Inhaltssprache
3. Ausgabe des gesamten Inhalts des FS_LIST Templates (Man kann NICHT absatzweise ausgeben.)
4. Projektsprache wiederherstellen
$CMS_SET(currentLanguage,#global.language)$
$CMS_SET(#global.language,#global.project.language("FI"))$
$CMS_VALUE(#row.column1)$
$CMS_SET(#global.language,currentLanguage)$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
wer kann helfen? Danke
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Karsten,
es gibt die Mรถglichkeit, die Inhalte eines DOM's sprachabhรคngig aus dem FormData der Section/Page auszulesen. Das kรถnnte in dem von dir verwendeten Kontext dann, wenn du dich in einer Absatzvorlage (Section) befindest, so aussehen (bei page einfach section mit page ersetzen):
$-- found something --> store and break loop --$
$CMS_FOR(lang, #global.project.languages)$
$CMS_IF(break==false)$
$CMS_IF(!#global.section.getFormData.get(lang, "st_text").get().isEmpty)$
$CMS_VALUE(#global.section.getFormData.get(lang, "st_text").get())$
$CMS_SET(break,true)$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
Ich hoffe das hilft dir weiter
Gruร,
Jascha
Nachricht geรคndert durch Jascha Teichmann
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
danke fรผr die Antwort. Leider funktioniert es nicht fรผr meinen Anwendungsfall.
Ich verwende das Template aus einem Tabellentemplate heraus, wo es mittels FS_LIST inline eingebunden wird.
Kรถnnte ich da etwas รผber #row erreichen?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
รผber die #row gibt es leider keine Mรถglichkeit an das FormData zu kommen.
Wรผrde es helfen, innerhalb einer Content-Abfrage รผber das Systemobjekt #cs das FormData des aktuellen Datensatzes zu holen?
Dieses Vorgehen habe ich bereits in einem frรผheren Ticket beschrieben, siehe hier:
$CMS_VALUE(#row.getValue("Bezeichner_EN"))$ fรผr ein DOM-Element
Das dort verwendete #global.language("EN") kann mit lang aus der Schleife ersetzt werden.
Viele Grรผรe,
Jascha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Den Hinweis verstehe ich nicht. Das Datenmodell von FS_LIST ist eine Liste mit FormData-Instanzen. Auf den Elementen kannst du dann den von Jascha beschriebenen Zugriff (formData.get(lang, "st_text").get()) anwenden.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
ich habe alle drei Varianten probiert aber erhalte immer nur einen leeren String, selbst wenn in der Sprache Content gepflegt wurde.
Hier nochmal mein Setting:
Table template:
<FS_LIST name="cs_col1" hFill="yes" rows="10">
<DATASOURCE type="inline" maxEntries="1" useLanguages="no">
<ACTIONS>
<ACTION name="ADD"/>
<ACTION name="EDIT"/>
</ACTIONS>
<COLUMNS>
<COLUMN show="no">#identifier</COLUMN>
</COLUMNS>
<LAYOUT>
<ADD component="toolbar" constraint="top"/>
<ADD component="overview" constraint="hide"/>
<ADD component="stackedview" constraint="center"/>
</LAYOUT>
<TEMPLATES source="sectiontemplates">
<TEMPLATE uid="text_for_news"/>
</TEMPLATES>
</DATASOURCE>
<LANGINFOS>
<LANGINFO lang="*" label="Write article"/>
<LANGINFO lang="DE" label="Artikel schreiben"/>
</LANGINFOS>
</FS_LIST>
Section Template Form:
<CMS_INPUT_DOM
name="st_text"
allowEmpty="yes"
hFill="yes"
list="yes"
listConfig="style:Listenart[1:unnummeriert|2:nummeriert]"
rows="25"
useLanguages="yes">
<FORMATS>
<TEMPLATE name="h2"/>
<TEMPLATE name="h3"/>
<TEMPLATE name="einrueckung__tab_"/>
<TEMPLATE name="text_farbe_blau"/>
<TEMPLATE name="text_farbe_rot"/>
<TEMPLATE name="text_farbe_gruen"/>
</FORMATS>
<LANGINFOS>
<LANGINFO lang="*" label="text input field"/>
<LANGINFO lang="DE" label="Texteingabefeld"/>
</LANGINFOS>
<LINKEDITORS>
<LINKEDITOR name="document_link"/>
<LINKEDITOR name="internal_link"/>
<LINKEDITOR name="normal_link"/>
<LINKEDITOR name="normal_link_ext"/>
</LINKEDITORS>
</CMS_INPUT_DOM>
Section Template HTML:
<CMS_HEADER>
</CMS_HEADER>
'$CMS_VALUE(#cs.dataset.formData.get(#global.project.language("EN"), "st_text").get())$'
'$CMS_VALUE(#global.section.getFormData.get(#global.project.language("EN"), "st_text").get())$'
'$CMS_VALUE(#global.page.getFormData.get(#global.project.language("EN"), "st_text").get())$'
$---------------------------------------$
$CMS_VALUE(st_text)$
Ausgabe
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Kennt jemand eine Lรถsung?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wenn in einer Tabellenvorlage รผber eine FS_LIST Absรคtze eingebunden werden, dann muss der Aufruf in der Ausgabe der Tabellenvorlage erfolgen. Man iteriert mit CMS_FOR รผber die FS_LIST und holt sich mit .get() den sprachabhรคngigen Wert aus dem DOM, das kรถnnte dann so aussehen:
$CMS_FOR(for_section,cs_col1)$
$CMS_VALUE(for_section.get(#global.project.language("EN"), "st_text").get())$
$CMS_END_FOR$
Der Aufruf muss dann nur passend in seinen Kontext eingebaut werden.
Viele Grรผรe,
Jascha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Karsten,
benรถtigst Du noch weitere Hilfe oder hat dir die Antwort bereits geholfen?
In diesem Fall wรคre es super, wenn Du sie als "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,
Jascha

