Typo3

Leere Inhaltsspalte ausblenden mit TV

14. 12. 2011

Ziel

In TemplaVoila habe ich eine (in meinem Beispiel) rechte Spalte definiert. Diese ist in einem DIV abgebildet, und zwar im Modus „INNER“, d. h. das DIV wird einfach durch die Inhaltselemente befüllt.

Nun möchte ich jedoch, dass bei Seiten, auf denen diese Inhaltsspalte leer ist, das DIV gar nicht angezeigt wird.

Lösung

1. Schritt

Zunächst weisen wir in der TemplaVoila-Vorlagen-Abbildung das DIV im Modus „OUTER“ zu. Somit wird das DIV einfach durch den Inhalt ersetzt.

Nun stimmt es zwar auf den leeren Seiten, jedoch dann nicht, wenn wir Inhalte haben – in diesem Fall fehlt nämlich das DIV.

2. Schritt

Wir können im „Global-XML“ des TemplaVoila-Templates eine Bedingung einfügen, dass der Inhalt einfach mit dem DIV (so wie wir es möchten) gewrappt wird. Und zwar nur, dann, wenn auch Inhalte da sind.

Inhaltsspalte ausblenden TV 01.png

Dazu sucht man im XML nach dem Namen der Inhaltsspalte, z. B. „Content Rechts“:

			<field_content_right type="array">
				<tx_templavoila type="array">
					<title>Content Rechts</title>

Darunter gibt es einen Bereich „TypoScript“, der in etwa so aussieht:

<TypoScript>
	10= RECORDS
	10.source.current=1
	10.tables = tt_content
</TypoScript>

Diesen ändert man nun wie folgt um:

<TypoScript><![CDATA[
	10 = RECORDS
	10.source.current=1
	10.tables = tt_content
	10.stdWrap {
	  wrap=<div id="middle_right">|</div>
	  required=1
	}
]]></TypoScript>

…wobei bei „wrap“ angegeben wird, mit welchem DIV der Inhaltsbereich umschlossen werden soll.

Die wilde Konstruktion von „CDATA“ ist notwendig, wenn man HTML-Zeichen im TypoScript-Quelltext verwendet.

3. Schritt

Speichern und Cache leeren!

Quelle

image_pdfimage_print
0 likes

Author

Manuel