Сниппеты

Что такое сниппеты

Сниппет — это код на языке PHP, который выводит результат своей работы в том месте шаблона/чанка, где размещен вызов этого сниппета. В сниппеты можно передавать любые параметры, в том числе другие сниппеты, тв-параметры или чанки.

Зачем нужны сниппеты

Как правило, сниппеты используются вывода динамически меняющегося содержимого. Они могут использоваться для создания меню, комментариев, новостных лент, блогов или любого другого функционала, который возможен на языке php в связке с API системы Evolution.

Вызов сниппета

Вызывать сниппет можно в любом месте ресурса. Как правило, обычно это происходит в шаблоне или чанках. Крайне не рекомендуется вызывать сниппеты в поле content, особенно если это поле доступно для редактирования менеджерам сайта.

[!mySnippet? &param=`Value`!] - некэшируемый вызов
[[mySnippet? &param=`Value`]] - кэшируемый вызов

Вызов через API

$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

Популярные сниппеты

  • DocLister - позволяет выводить данные из любых таблиц. Идеален для создания новостных лент, блогов, каталогов товаров или услуг.
  • FormLister - сниппет для работы с формами. Прекрасно подходит для форм отправки сообщений с сайта, авторизации-регистрации и любого возможного функционала, связанного с личным кабинетом.
  • phpthumb - сниппет для создания эскизов изображений, наложения водяных знаков и другой работы с изображениями.
  • JotX - сниппет для создания комментариев
  • Sitemap - генератор sitemap.xml
Mem: 3.5 mb, MySQL: 0.0028 s, 2 req., PHP: 0.0348 s, all: 0.0376 s, cache.