mstaender
I'm new here

Aktuelle Sprache im ContentSelect nutzen

Jump to solution

Hi,

aktuell kämpfe ich ja an allen Ecken und Enden damit an die aktuelle Sprache in Formularen etc. zu kommen um Abfragen sprachabhängig zu steuern. Das klappt ja leider nicht wirklich und jetzt dachte ich "hey, fang einfach mit dem nächsten Thema an, das ist einfacher"...

Ich möchte nur Einträge aus einer DB auf der Webseite anzeigen die zur entsprechenden Sprache gehören. Also erinnerte ich mich an die DTB und habe zunächst versucht das über eine Strukturseite mit Filtern etc. zu lösen was schon mal nicht klappte (ich habe den Filter nicht sprachabhängig bekommen) aber im Forum hier habe ich gelesen, dass man das mit einem ContentSelect machen kann.

Also habe ich inzwischen verschiedenste Ideen ausprobiert. Aktuell bin ich hier angelangt:

<CMS_HEADER>

    <CMS_FUNCTION name="contentSelect" resultname="fr_news">

     

      <CMS_VALUE_PARAM name="lang" value="???" />

     

      <CMS_PARAM name="schema" value="meinschemaname" />

        <QUERY entityType="news" limit="3">

            <FILTERPARAM parameter="lang" datatype="java.lang.String"/>

            <EQ attribute="language" value="lang"/>

        </QUERY>

    </CMS_FUNCTION>

</CMS_HEADER>

<section>

    <h3>News (ContentSelect Test)</h3>

    $CMS_FOR(news, fr_news)$

        Something visible?!

    $CMS_END_FOR$

    <h3>End News (ContentSelect Test)</h3>

</section> 

Laut meinen Theorien sollte das gehen aber es ist egal was ich für ??? einsetze, es geht NIE.

Wenn ich z.B. direkt <EQ attribute="language" value="DE"/> eingebe bekomme ich die Elemente angezeigt aber %lang% oder #global.language.abbreviation bringt nichts und schon gar nicht wenn ich versuche das als Parameter von außen zu setzen (was ich nur gemacht habe, weil ich im Forum irgendwo ein Beispiel gesehen habe...

Was mache ich falsch? Langsam sind es zu viele ungelöste Probleme was sprachabhängige Selektionen angeht Smiley Sad

MfG Marcus

0 Kudos
1 Solution

Accepted Solutions

Hallo Marcus,

Du prüfst hier gegen den Wert "lang", musst aber gegen den Parameter prüfen. Versuch mal

<EQ attribute="language" parameter="lang"/>

Viele Grüße

Michael

View solution in original post

0 Kudos
4 Replies
MarsDD
Occasional Observer

Hi Marcus,

ich glaube es funktioniert wie folgt:

<CMS_VALUE_PARAM name="lang" value="set_lang" />

$CMS_SET(set_lang, <Sprache>)$

$CMS_FOR(news, fr_news)$

...

Viele Grüße

Marcel

Hi Marcel,

zunächst fand ich das total einleuchtend aber bisher klappt es nicht. Ich habe offenbar irgendwas an der "Variablen-Weiterreichungs-Chain" nicht verstanden. Bei mir sieht das jetzt so aus:

<CMS_HEADER>

    <CMS_FUNCTION name="contentSelect" resultname="fr_news">

      <CMS_VALUE_PARAM name="lang" value="set_lang" />

      <CMS_PARAM name="schema" value="immernochmeinschema" />

        <QUERY entityType="news" limit="3">

            <FILTERPARAM parameter="lang" datatype="java.lang.String"/>

            <EQ attribute="language" value="lang"/>

        </QUERY>

    </CMS_FUNCTION>

</CMS_HEADER>

$CMS_SET(set_lang, "DE")$ <-- hier sind Anführungszeichen um DE...

<section>

    <h3>News (ContentSelect Test)</h3>

    $CMS_FOR(news, fr_news)$

        Something visible?!

    $CMS_END_FOR$

    <h3>End News (ContentSelect Test)</h3>

</section> 

Aktuell wird immernoch kein Element gefunden

0 Kudos

Hallo Marcus,

Du prüfst hier gegen den Wert "lang", musst aber gegen den Parameter prüfen. Versuch mal

<EQ attribute="language" parameter="lang"/>

Viele Grüße

Michael

0 Kudos

Hi Michael,

das war der noch fehlende Hinweis den ich immer wieder übersehen hatte.

Finale Lösung um ein ContentSelect ind er Form abhängig von der Sprache zu machen, indem geprüft wird ob die Sprache im Datensatz steht:

<CMS_HEADER>
    <CMS_FUNCTION name="contentSelect" resultname="fr_news">

      <CMS_VALUE_PARAM name="lang" value="set_lang" />

      <CMS_PARAM name="schema" value="immernochmeinschema" />
        <QUERY entityType="news" limit="3">
            <FILTERPARAM parameter="lang" datatype="java.lang.String"/>
            <EQ attribute="language" parameter="lang"/>
        </QUERY>
    </CMS_FUNCTION>
</CMS_HEADER>

$CMS_SET(set_lang, #global.language.abbreviation)$

<section>

    <h3>News (ContentSelect Test)</h3>
    $CMS_FOR(news, fr_news)$

        ...
        Something visible!

        ...
    $CMS_END_FOR$
    <h3>End News (ContentSelect Test)</h3>
</section> 

Danke euch zwei Smiley Happy

MfG Marcus

0 Kudos