Hallo JanoschSkuplik,
Ich habe mal noch eine Bitte bzw. Frage:
Kannst du auch ein HTML-Feldtyp mit bereitstellen, der dann z.B. den Inserttag {{iflng::}} bekommen kann und somit das nachfolgende Feld nur einblendet, wenn die Sprache passt?
Folgender Hindergrund:
Wir haben eine mehrsprachige Website. Es gibt selbstverständlich für jede Sprache einen eigenen Seitenbaum etc.
Unsere Redakteure wollen gern den Inhalt in einer Ansicht für alle Sprachen pflegen. Prinzipiell geht das ja mit Contao so nicht.
ABER:
Ich habe folgendes gemacht:
-in den Artikel der jeweiligen Fremdsprache habe ich ein Inhaltselement vom Typ Artikel gesetzt, dann auf den Artikel der Hauptsprache linkt
-jetzt muss ich also den Inhalt für die unterschiedlichen Sprachen im Artikel der Hauptsprache pflegen
-das geht z.B. indem man das jeweilige Inhaltselement entsprechend vervielfältigt und davor mit {{iflng::SPRACHE}} die jeweilige Sprache abfragt
-man kann aber noch eleganter sich mit dem dma_elementgenerator z.B. ein Inhaltselement "Überschrift für alle Sprachen anlegen"
-dies beinhaltet dann z.B. zwei Textfelder für die Überschrift in DE und EN
Jetzt weiß ich nur nicht wohin mit dem Insertag {{iflng::}}, damit immer eines von beiden angezeigt wird.
Ich habe dazu folgende Krücke gemacht:
Bei den Einstellungen des Feldtyps habe ich bei den CSS-Klassen die Sprache mitgegeben z.B. de bzw. en
Dann habe ich in die Templates eine Sprachweiche eingebaut:
PHP-Code:
<?php
global $objPage;
$lang_br = $objPage->language; // aktuelle Seitensprache
$css = $this->class; // CSS-Klassen vom Feld
$de = 'de'; // CSS-Klassenname DE
$en = 'en'; // CSS-Klassenname EN
$uni = 'uni'; // CSS-Klassenname für UNI-Sprache
// prüft wleche CSS-Klasse das Feld hat
$l_de = strpos($css, $de);
$l_en = strpos($css, $en);
$l_uni = strpos($css, $uni);
// speichert in $lang die vergebene Sprache aus der CSS-Klasse
if ($l_de !== false) {$lang = $de;};
if ($l_en !== false) {$lang = $en;};
if ($l_uni !== false) {$lang = $uni;};
// zeigt den Rest nur an, wenn die aktuelle Seitensprache gleich der
// vergebenen Sprache mittels CSS-Klasse ist
if (($lang_br == $lang) OR ($lang == 'uni')):
?>
<?php endif; // schließt das IF vom Anfangsblock der Sprachweiche, kommt ganz ans Ende ?>
Zwischen den beiden PHP-Blöcken steht der Inhalt des Originaltemplates.
Somit kann man den Inhalt für verschiedene Sprachen direkt in einem Inhaltselement pflegen:
ie_ueberschrift_02.jpg
Ich denke, dass man mit einem HTML-Feldtyp sich die Templateanpassungen sparen kann. Oder?
Steffen
Lesezeichen