PHx-Modifier: multi_and und multi_or

von Thomas Jakobi am Dienstag, 30. September 2008 um 15:43 Uhr.

PHx ist eine sehr mächtige Erweiterung für MODx. Mit diesem Plugin lassen sich Platzhalter, Template-Variablen und auch Snippet-Ausgaben mittels einer einfachen Syntax verändern, mit einem Wert vergleichen etc. Eigene PHx-Modifier können sehr einfach in PHP hinzugefügt werden.

So lassen sich mit folgenden beiden Modifiern alle Werte in einer kommaseparierten Liste mit einem Boolschen OR oder AND miteinander verknüpfen.

Voraussetzungen

Folgende Plugins/Snippets müssen installiert und funktionsfähig sein:

PHx

Es werden zwei Dateien im Verzeichnis assets/plugins/phx/modifiers angelegt und mit folgendem Inhalt bestückt:

multi_or.phx.php
<?php
/*  
 * description: the values in a comma separated list are joined by a boolean OR
 * usage: [+phx:multi_or=`[+value1+],[+value2+]`:then=`one is true`+]
 */
$options = explode(',', $options);
$ok = '0';
foreach ($options as $option) {
    if ($option) {
        $ok = '1';
    }
}
$condition [] = $ok;
return;
multi_and.phx.php
<?php
/* 
 * description: the values in a comma separated list are joined by a boolean AND
 * usage: [+phx:multi_and=`[+value1+],[+value2+]`:then=`one is true`+]
*/
$options = explode(',', $options);
$ok = '1';
if (count($options) == 0) {
    $ok = '0';
}
foreach ($options as $option) {
    if (!$option) {
        $ok = '0';
    }
}
$condition [] = $ok;
return;

Danke an Stefan und Bruno aus dem MODx-Forum für die Anregung zu dem Modifier.

Nun lässt sich z.B. mit

[[+phx:multi_or=`[[+value1]],[[+value2]]`:then=`Ein Platzhalter ist wahr`]]

überprüfen, ob ein Wert in der kommaseparierten Liste wahr ist.

Viel Erfolg

Bislang habe ich folgende PHx Modifier veröffentlicht: