Snippets als Ausgabefilter in MODx Revolution

flattr this!

In MODx Revolution kann man Snippets als Output Filter (Ausgabefilter) einsetzen. Damit kann man nun kleine Funktionen, Helfer, schnell und einfach einbinden und benutzen. Wie geht das? Ich zeige das an dem Beispiel eine Snippets “wrap”. Mit diesem Snippet lässt sich eine Variable mit einem Tag umschließen, aber nur wenn sie nicht leer ist. Praktisch, wenn man unnötige leere Tags auf der Seite vermeiden möchte.

Zuerst einen Snippet mit dem Namen “wrap” anlegen und folgenden Code einsetzen:

<?php
if(!$scriptProperties['options'])
  $scriptProperties['options'] = '%s';
if($scriptProperties['input'])
   printf($scriptProperties['options'], $scriptProperties['input']);
?>

Einsetzen kann man diesen Snippet in Chunks, Templates und Ressourcen. Der Parameter des Snippets ist ein Format String der printf-Funktion.

[[++site_name:wrap=`<h1>%s</h1>`]]

Das bedeutet, dass um die Variable [[++site_name]] ein h1-Tag aufgemacht wird, aber nur, wenn sie nicht leer ist. Mit “:wrap” wird der Snippet eingebunden (wie die Modifier in Smarty), mit dem Gleichheitszeichen “=” kann man einen Parameter übergeben.

Output Filter für Snipptes mit Parametern werden vor dem “?” angegeben. Beispiel:

[[Wayfinder:wrap=`<div>%s</div>`? &startId=`0` &rowTpl=`menu_item` &hereTpl=`menu_item_active`]]

Man kann die Output Filter auch verketten: “:limit=`50`:wrap=`<p>%s</p>`”. Weitere Infos zu den Output Filtern findest Du hier.

Update 1

Aus irgendeinem Grund funktionieren die Ausgabefilter nicht mit Platzhaltern, die in anderen Snippets gesetzt wurden. Aber es gibt ein Walkaround:

[[!wrap? &input=`[[+fi.error.company]]` &options=`<em>%s</em>`]]

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>