De:Tutorials TVwennInhalt
From MODx Wiki
[edit]
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.
- Erzeuge eine neue Template-Variable mit leerem Ausgabe-Widget.
- Erzeuge ein neues Snippet das die Ausgabe der TV abholt und formatiert. Weise es den Templates zu, in denen es verwendet werden soll.
- 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
Name: ExtraText1 Beschreibung: zusätzliche Textbox 1 Eingabe-Typ: Rich Text 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
<div id="content"> [*content*] [!ExtraText1!] </div>
[edit]
Siehe auch
- Adding TV Widgets without hacking the core (dieser Artikel ist eine Übersetzung hiervon)
