Сниппет — это код на языке PHP, который выводит результат своей работы в том месте шаблона/чанка, где размещен вызов этого сниппета. В сниппеты можно передавать любые параметры, в том числе другие сниппеты, тв-параметры или чанки.
Как правило, сниппеты используются вывода динамически меняющегося содержимого. Они могут использоваться для создания меню, комментариев, новостных лент, блогов или любого другого функционала, который возможен на языке php в связке с API системы Evolution.
Вызывать сниппет можно в любом месте ресурса. Как правило, обычно это происходит в шаблоне или чанках. Крайне не рекомендуется вызывать сниппеты в поле content, особенно если это поле доступно для редактирования менеджерам сайта.
[!mySnippet? ¶m=`Value`!] - некэшируемый вызов
[[mySnippet? ¶m=`Value`]] - кэшируемый вызов
$params => array('param' => 'Value');
$modx->runSnippet('mySnippet', $params);
Для примера сделаем сниппет, показывающий дату создания документа в читаемом человеком формате. Дата создания документа находится в системном ТВ-параметре [*createdon*]. Параметр хранит дату создания документа в формате unixtime, и выглядит его значение примерно так: 1144904400.
<?php
$fullMonth = array(
'1' => 'января',
'2' => 'февраля',
'3' => 'марта',
'4' => 'апреля',
'5' => 'мая',
'6' => 'июня',
'7' => 'июля',
'8' => 'августа',
'9' => 'сентября',
'10' => 'октября',
'11' => 'ноября',
'12' => 'декабря');
$output = strftime('%d.%m.%Y',$date);
$date = explode(".", $output);
$month = (int)$date[1];
$m = $fullMonth[$month];
$out = $date[0] . ' ' . $m . ' ' . $date[2];
return $out;
Использование.
Передадим сниппету ТВ-параметр [*createdon*]:
[[ruDate? &date=`[*createdon*]`]]
В результате мы получим что-то подобное:
21 мая 2018