De:Tutorials TVwennInhalt

From MODx Wiki

Jump to: navigation, search

Inhalte von Template-Variablen per Snippet ausgeben

Problem: Es soll per TV etwas in Dokumente eingefügt werden, wofür es kein passendes Widget für die Ausgabe gibt.

Nehmen wir an, wir wollen einen besonders formatierten Text-Block, der nicht auf allen Seiten benutzt wird und deshalb nicht sichtbar sein soll, wenn er keinen Inhalt hat.

Ein anderer Einsatzzweck wäre z.B. eine zusätzliche CSS-Datei zu laden, die im TV ausgewählt werden kann.

Lösung: Ein Widget mit einem Snippet erzeugen.

  1. Erzeuge eine neue Template-Variable mit leerem Ausgabe-Widget.
  2. Erzeuge ein neues Snippet das die Ausgabe der TV abholt und formatiert. Weise es den Templates zu, in denen es verwendet werden soll.
  3. Setze den Aufruf des Snippets im Template oder Dokument an die Stelle, an der die TV ausgegeben werden soll.

Bleiben wir bei dem Beispiel mit der zusätzlichen Textbox:

1. Erstelle eine Template-Variable wie folgt

  1. Name: ExtraText1
  2. Beschreibung: zusätzliche Textbox 1
  3. Eingabe-Typ: Rich Text
  4. Ausgabe-Widget: keins

2. Erzeuge ein neues Snippet namens ExtraText1

<?php
# Parameter:
# &tvname - Name der benutzten Template-Variable, hier ExtraText1
$TVname = isset($tv)?$tv:'ExtraText1'; 
 
#Abholen der Ausgabe der TV
if( $TVarray = $modx->getTemplateVarOutput(array($TVname)) ){
	#TV output is in index [$TVname][1]
	$tvOutput = $TVarray[$TVname][1];
	if(empty($tvOutput)) return ''; //nichts ausgeben wenn TV leer
	return '<div class="extratext1">'.$tvOutput.'</div>';
}
return '';
?>

3. Snippet im Template oder Dokument aufrufen

  1. <div id="content">
  2. [*content*]
  3.  
  4. [!ExtraText1!]
  5.  
  6. </div>

Siehe auch

Personal tools