Как писать сниппеты для MODX?

Довольно часто новичкам, которые начинают работать с MODX, приходится сталкиваться с тем, что для решения какой-нибудь элементарной задачи приходится долго искать готовые решения. Сейчас мы разберем, как писать свои сниппеты?


Разберем на небольшом примере.

Часто приходится иметь дело со следующей ситуацией: есть сайт-каталог, товары в каталоге имеют численную характеристику, будь то вес, или чаще всего цена. В том случае, если цена используется для фильтрации товаров, тогда TV параметр должен иметь формата числа, но для пользователей числа надо форматировать. Вот этим мы как раз и займемся.

Есть MODX Revolution, есть TV-параметр

price

, в нем есть значение 5000000 (пять миллионов). Согласитесь, понять 5 миллионов или 500 тысяч — понять довольно сложно, но так как оно численное, с ним удобно работать для сравнения и фильтрации.

Для форматирования числа будем использовать PHP функцию

number_format()

. Вызов сниппета будет примерно выглядеть следующим образом:

[[num_format? &num=`[[*price]]` &dec=`2` &sep=`,` &tho=` `]]

Наш сниппет принимает следующие параметры:


  1. num

    — TV параметр, или число, которое нужно отформатировать;

  2. dec

    — количество символов после запятой;

  3. sep

    — разделитель между целой и дробной частью;

  4. tho

    — разделитель между тысячными разрядами.

Все эти параметры ни что иное, как названия переменных, которые мы можем использовать в сниппете.

Заходим в раздел «Сниппеты» и создаем новый с названием

num_format

.

Вставляем в него следующий код:

if ($num == '') // Значение из TV параметра
$num = 0;

if ($dec == '') // число знаков после запятой
$dec = 2;

if ($sep == '') // разделитель дробной части
$sep = ',';

if ($tho == '') // разделитель тысячого разряда
$tho = ' ';

$output = number_format( $num, $dec, $sep, $tho);
return $output;

Как вы уже наверно заметили, в коде сниппета можно использовать те переменные, которые были определены при его вызове как параметры.

В сниппете можно использовать переменные, которые были определены при его вызове как параметры.

В первых строчках сниппета определяем значения по-умолчанию. Сделано это прежде всего для того, чтобы максимально универсально использовать PHP функцию.

Давайте взглянем на то, что за результат мы получим, если будем вызывать наш сниппет при различных параметрах:

// [[num_format]]
0,00

// [[num_format? &num=`[[*price]]` &dec=`2`]]
5 000 000,00

// [[num_format? &num=`8888` &dec=`3` &sep=`/`]]
8 888/000

При этом очередность перечисления параметров во время вызова сниппета значения не имеет. в отличии от параметров в PHP функции.

Таким образов в написании своих сниппетов для MODX нет абсолютно никаких сложностей. Все работает очень просто и понятно. По такому же принципу работает и Evolution, различаться будет только синтаксис при вызове сниппета,

статья с различиями между Evo и Revo

также есть на сайте.


admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago