ckaiser
I'm new here

Datenquelle mit sprachabhängigen Feldern in einem einzigen Ordner generieren.

Hallo,

ich habe eine Frage zu sprachabhängigen Felder in einer Datenquelle. Wie kann ich mit First Spirit

den Inhalt sprachabhängiger Felder in Dateien generieren lassen, die in einem einzigen Ordner

liegen?

Hier die Details:

Felder der Datenquelle:

  cs_key : String

  cs_page_ref : Referenz auf Medium oder Seite

   - Das Feld cs_page_ref ist sprachabhängig.

Basierend auf diesen Daten wird einen XML Datei generiert, die von Struts bzw. Tiles eingelesen wird.

Beispiel: Aus folgendem Datensatz in einer First Spirit Datenquelle ...

cs_key         := 'page.login'

cs_page_ref_DE := Referenz auf de/login.jsp

cs_page_ref_EN := Referenz auf en/login.jsp

... sollen 2 Dateien in einem einzigen Verzeichnis generiert werden:

tiles.xml

<!-- english is fallback language -->

<tiles-definitions>

   <definition name="page.login" path="/de/login.jsp" />

</tiles-definitions>

tiles_de.xml

<tiles-definitions>

   <definition name="page.login" path="/de/login.jsp" />

</tiles-definitions>

Wie kann ich beim Generieren First Spirit dazu bringen, alle Dateien in einem einzigen Verzeichnis abzulegen,

anstatt wie es normalerweise wäre, in jedem Sprachunterordner eine Datei:

/cmspages/de/.../tiles_de.xml

/cmspages/en/.../tiles.xml

Ich nutze folgendes Absatztemplate, welches die Datenquelle ausliest:

Formular:

<CMS_MODULE>

  <CMS_INPUT_COMBOBOX name="st_language" hFill="yes" useLanguages="no">

    <CMS_INCLUDE_CONTENT type="entries" table="shop.language">

      <LABEL lang="*">#row.key</LABEL>

    </CMS_INCLUDE_CONTENT>

    <LANGINFOS>

      <LANGINFO lang="*" label="Select Language"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

 

</CMS_MODULE>

OUTPUT:

<CMS_HEADER>

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

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

    

        <QUERY entityType="tiles_def">

        </QUERY>

    </CMS_FUNCTION>

</CMS_HEADER>

$CMS_TRIM(level:2)$

<!DOCTYPE tiles-definitions PUBLIC

                "-//Apache Software Foundation//DTD Tiles Configuration 1.3//EN"

                "http://struts.apache.org/dtds/tiles-config_1_3.dtd">

<tiles-definitions>

    <definition name="dummy" path="/index.html" />

    $CMS_FOR(row,fr_definitions_list)$

        $CMS_SET(pageRefValue,"")$

       

        $CMS_SWITCH(st_language)$

            $CMS_CASE( "0")$ $-- id of 'DE' --$

                $CMS_SET(pageRefValue)$$CMS_REF(row.page_ref_DE,abs:2)$$CMS_END_SET$

            $CMS_CASE( "1")$ $-- id of 'EN' --$           

                $CMS_SET(pageRefValue)$$CMS_REF(row.page_ref_EN,abs:2)$$CMS_END_SET$

        $CMS_END_SWITCH$   

       

        $-- empty if unsupported language --$

        $CMS_IF(!pageRefValue.toString().equals(""))$           

            <definition name="$CMS_VALUE(row.key)$" path="/cmspages/$CMS_VALUE(pageRefValue)$" />

        $CMS_END_IF$

    $CMS_END_FOR$

$CMS_END_TRIM$

</tiles-definitions>

Danke und mit freundlichen Grüßen aus Soest

Christian

0 Kudos
2 Replies
stephan
I'm new here

Hallo Christian,

wenn es sich bei der Problematik um ein generelles Problem handelt, also alle Seiten einer Sprache später im selben Verzeichnis liegen sollen, würde man dazu einen URL-Creator implementieren, so dass die Dateien direkt an der richtigen Stelle deployed. Mit FS5 ist das auch out-of-the-box möglich. Sind von dem Problem nur bestimmte Seiten betroffen würde ich ein Post-Deployment-Script schreiben, was die Dateien nachgelagert an die richtige Stelle verschiebt.

Viele Grüße

Jörg

Hi Jörg,

danke für die Antwort. Wir haben in der Zwischenzeit ein Plugin für Struts geschrieben, dass die Dateien aus unterschiedlichen Ordnern lesen kann.

Gruß

Christian

0 Kudos