Questions & Answers

SOLVED
Karsten
I'm new here

CMS_INPUT_DOM in anderer Sprache ausgeben

Jump to solution

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+"'")$

0 Kudos
1 Solution

Accepted Solutions

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)$

View solution in original post

0 Kudos
10 Replies
Karsten
I'm new here

wer kann helfen? Danke

0 Kudos

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 Smiley Wink

GruรŸ,

Jascha


Nachricht geรคndert durch Jascha Teichmann

0 Kudos

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?

0 Kudos

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

0 Kudos

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.

Peter
0 Kudos

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

2014-04-04 13_50_00-(0000)  StoInside (Benutzer_ dewe0815) - FirstSpirit Client @ dewecmsp.png

0 Kudos

Kennt jemand eine Lรถsung?

0 Kudos

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

0 Kudos

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

0 Kudos

Type a product name