Search the FirstSpirit Knowledge Base
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
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