Сниппеты в CMS MODX

Содержание:
  1. Назначение и способы вызова сниппета
  2. Где расположены сниппеты в админке
  3. Параметры сниппета
  4. Комментарии

В этой статье рассмотрим, что такое сниппет и зачем он нужен в MODX Revolution. Познакомимся с тем, как осуществляется вызов сниппета, чем отличается кэшированный вызов сниппета от не кэшированного, а также как осуществляется настройка, т.е. передача параметров или набора параметров, сниппету.

Назначение и способы вызова сниппета

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

<!-- Вызов сниппета "ИмяСниппета" с кэшированием результатов его работы -->
[[ИмяСниппета]]
<!-- Вызов сниппета "ИмяСниппета" без кэширования результатов его работы -->
[[!ИмяСниппета]]

Отличается один способ вызова сниппета от другого только кэшированием.

Не кэшированный вариант вызова сниппета всегда возвращает текущие, полученные в результате выполнения кода, результаты. Применяется такой вариант вызова сниппета в тех случаях, когда он может вернуть при следующем запуске или в зависимости от некоторых других условий оличный (иной) результат. Не кэшированные вызовы сниппетов обычно используют для реализации системы авторизации на сайте, вывода блока комментариев и др.

В отличии от не кэшированного кэшированный вариант вызова сниппета в большинстве случаев возвращает результаты из кэша. Рассмотрим, как это работает. В момент вызова кэшированного сниппета, MODX сначала проверяет, есть ли результат его работы (ответ) в кэше. Если да, то использует его. В противном случае (если ответ сниппета не найден в кэше) запускает код этого сниппета на выполнение. Полученный в результате выполнения сниппета ответ, MODX не только использует для формирования содержимого ресурса (вывода), но также сохраняет его в кэш. После этого код сниппета уже не будет выполняться при формировании страницы, MODX просто будет использовать готовый результат его работы из кэша.

Кэшированный вариант вызова сниппета позволит не только снизить нагрузку на сервер, но также уменьшить время, необходимое для формирования страницы (ресурса), которую необходимо отдать пользователю. Поэтому на сайте где это возможно желательно использовать именно кэшированный способ вызова сниппета.

В каких элементах MODX можно вызвать сниппет с помощью тега

Тег вызова сниппета можно размещать в чанках, шаблонах, TV-параметрах и полях ресурсов MODX Revolution.

Где расположены сниппеты в админке

В админке CMF MODX Revolution все сниппеты расположены в разделе "Сниппеты". Данный раздел находится на левой панели во вкладке "Элементы".

MODX - Сниппеты в админке

Добавление (установка) новых сниппетов в систему MODX Revolution может осуществляться следующими способами:

  • посредством установления пакетов (приложений), содержащих в своём наборе готовые сниппеты. Предназначены они в большинстве случаев для реализации определённого динамического функционала на сайте;
  • с помощью создания своих собственных сниппетов.

Параметры сниппета

Сниппеты в MODX Revolution могут иметь параметры. Параметры - это php-переменные, которые можно инициализировать во время вызова сниппета.

Указываются параметры в вызове сниппета после знака воспроса (?).

MODX - Параметры, переданные в вызов сниппета
<!-- Вызов сниппета "ИмяСниппета" без кэширования результатов с 2 параметрами.
     1 параметр имеет имя param1 и значение value1,
     2 параметр имеет имя param2 и значение value2 -->  
[[!ИмяСниппета? &param1=`value1` &param2=`value2`]]

Передаются параметры сниппету посредством пар &имяПараметра=`значение`. Пара начинается со знака & (амперсанда). Имя параметра отделяется от значения с помощью знака равно (=). Кроме этого значение параметра должно быть заключено в обратные одинарные кавычки (`).

Например, выведем 7 последних тикетов (статей) из раздела 2, используя в качестве оформления каждого результата содержимое чанка tpl.Tickets.ticket.latest:

[[!TicketLatest?
  &parent=`2`
  &limit=`7` 
  &action=`tickets`
  &tpl=`tpl.Tickets.ticket.latest`
]]
<!--
Имя сниппета: TicketLatest
Параметры сниппета:
  parent - список разделов для поиска результатов (2);
  limit - количество записей для выборки (7);
  action - указывает на то, что необходимо выбрать (tickets);
  tpl - чанк, на основании которого оформляется каждый тикет (tpl.Tickets.ticket.latest).
-->

Наборы параметров

Передавать параметры сниппету можно не только посредством пар &имяПараметра=`значение`, но и в виде набора. Набор параметров - это некоторая сущность MODX, которая позволяет передать сниппету коллекцию параметров посредством указания только некоторого имени (имени этого набора).

Управление наборами параметров в MODX Revolution осуществляется на странице "Наборы параметров". Для открытия данной страницы необходимо в верхнем меню админки нажать на значок шестерёнки и выбрать из открывшегося списка пункт "Наборы параметров".

MODX - Наборы параметров

Страница "Наборы параметров" состоит из 2 частей:

  • 1 часть (левая панель) - это имена наборов;

  • 2 часть (правая панель) - это параметры, которые связаны с определённым именем набора. Представлены параметры в этой панели посредством таблицы, состоящей из 2 столбцов: имени параметра и значения.

На этой странице можно не только увидеть имена наборов и связанные с ними параметры, но также создать новые наборы или отредактировать существующие.

Например, создадим новый набор параметров для сниппета TicketLatest:

  1. Откроем страницу "Наборы параметров" (в главном меню админки значок "Шестерёнка"->Наборы параметров).

  2. Нажмём на кнопку "Новый набор параметров". В открывшемся диалоговом окне "Создать набор параметров" введём в поля следующие значения:

    • имя - html;
    • категория - не указано;
    • описание - последние 7 статей по HTML.
    MODX - Создать набор параметров
  3. Нажмём на кнопку "Сохранить".

  4. Нажмём правой кнопкой мыши на только что созданный набор параметров и в открывшемся контекстном меню выберем пункт "Связать с элементом". В открывшемся диалоговом окне выберем имя класса modSnippet и элемент TicketLatest. Нажмём на кнопку "Сохранить".

    MODX - Связывание набора параметров html с элементом TicketLatest
  5. После этого выберем в левой панели набор html, который связан с элементом TicketLatest (html->TicketLatest). Параметры и значения по умолчанию, которые имеет этот набор (а точнее связанный с этим набором сниппет TicketLatest) отобразится в таблице.

    MODX - Набор параметров html
  6. Изменим значения необходимых параметров:

    • parents - список разделов для поиска результатов (2);
    • limit - количество записей для выборки (7);
    • action - указывает на то, что необходимо выбрать (tickets);
    • tpl - чанк, на основании которого оформляется каждый тикет (tpl.Tickets.ticket.latest).

    Нажмём на кнопку "Сохранить набор параметров".

  7. Укажем созданный набор в теге вызова сниппета TicketLatest.

    [[!TicketLatest@html]]

    Эта запись автоматически установит сниппету TicketLatest параметры, содержащиеся в наборе html.

    Кроме этого параметры набора можно переопределить, если их указать непосредственно в вызове сниппета с помощью пар &ИмяПараметра=`значение`.

    [[!TicketLatest@html? &limit=`10`]]

    Параметр limit в этом примере будет иметь значение 10 вместо 7 (значение 7 имеет данный параметр в наборе html).

Комментарии: 23

Evgeny
Evgeny
Привет, подскажите пожалуйста как вывести параметр чанка в сниппет
Я перевоу весь свой сайт на феном, т.к. в итоговом выводе иногда на страничке формируется сетка более чем из 1000ссылок, я прочитал гдето на modxpro что fenom быстрее формирует и выводит большой объем ссылок
раньше был чанк и вывод такой:

чанк copy.listzadanie2.tpl
[[+tv.answer
:is=`Да`
:then=`
    [[+total_number
    :is=`1`
    :then=`<li><a href="[[~[[+id]]]]" >смотреть ответы</a></li>`
    :else=`<li><a href="[[~[[+id]]]]" >[[+pagetitle]]</a></li>`]]`
:else=`<li class="disable" title="">[[+pagetitle]]</li>`]]
[[pdoResources?
                            &parents=`[[+id]]`
                            &depth=`0`
                            &limit=`0`
                            &showHidden=`1`
                            &sortby=`menuindex` &sortdir=`ASC`
                            &templates=`4`
                            &includeTVs=`answer`
                            &tpl=`copy.listzadanie2.tpl`
                            &setTotal=`1`
                            &totalVar=`total_number`
                        ]]
Сейчас нужно выводить tpl через сниппет из-за totalvar, вывожу так:

сниппет list.zadany2
<?php
if($tv == 'Да'){
    if($modx->getPlaceholder('total_number') == 1){
        return "$placeter";
    }else{
        return "$placeter2";
    }
}
else{
    return '$placeter3';
}

вывод в чанке tpl
{'!list.zadany2' | snippet: [ 
    'tv' => $_pls['tv.answer'] ,
    'placeter' => '<li><a href="{$id | url}" >{$pagetitle}</a></li>'
]}
Но в выводе красуются пустые блоки вывода, т.e. {$id | url} и {$pagetitle} в параметре placeter не формируются {$pagetitle}, подскажите пожалуйста как правильно вывести и куда мне копать, хочу научиться делать сниппеты хотябы вот такие, базовые
Евгений
Евгений
Здравствуйте. Пытаюсь прикрутить сниппет на отправку значения с формы на Битрикс24.
Но как то странно себя ведёт. НЕ подтягивает почту. А при обновление страницы с пустой формой отправляет пустой лид. Может что то не так прикрутил )?

Создал сниппет Bitrix24.

Вместо кода:

[[!FormIt?
&hooks=`spam,email,redirect`
&emailTpl=`tpl.email.partners`
&emailTo=`nikola19900210@yandex.ru`
&emailSubject=`Заявка на партнерство`
&validate=`name:required,mail:required,phone:required`
&clearFieldsOnSuccess=`1`
&redirectTo=`40`
&submitVar=`submitPartner`
]]

Поставил [[!Bitrix24?]]

Далее не менял код.
Александр Мальцев
Александр Мальцев
Здравствуйте. Если вы создали сниппет, то его код должен быть написан на php. А такой вызов можно использовать в чанках и шаблонах.
Евгений
Евгений
Получается что в шаблоне перед формой поставил вызов сниппета. Он вызывается. Отправляет Имя и Телефон а почту нет. Хотел посмотреть значение переменной POST но так и не получилось это сделать. Ответ «Комментарий» на сайте не появляется. Bitrix24 поставил в строчку: &hooks=`Bitrix24,spam,email,redirect`

Пока не понял почему не подтягивается. И толком подсказать не смогли
Александр Мальцев
Александр Мальцев
1. В браузере посмотреть, что у вас уходит на сервер можно открыв «Инструменты разработчика» (вкладка Network). В ней нужно установить галочку «Preserve log» и открыть Headers, внизу буду поля, которые браузер отправил на сервер.
2. В своем хуке получить все поля и вывести их в консоль ошибок MODX можно так:
$allFormFields = $hook->getValues();
$modx->log(modX::LOG_LEVEL_ERROR,implode('; ', $allFormFields));
Евгений
Евгений
Спасибо. С панели инструментов в браузере посмотрел. Поля отправляются все на сервер. Вывел в консоль ошибок MODX ошибки по хуку. Куча ошибок. В основном 240.

Ошибки за один день. Для меня тёмный лес. Буду разбираться ).
[2020-09-18 20:58:54] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 245) Could not connect to provider at: http://api.stopforumspam.org/
[2020-09-19 07:51:42] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code : 6) PHP warning: count(): Parameter must be an array or an object that implements Countable
[2020-09-19 07:51:42] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code : 6) PHP warning: count(): Parameter must be an array or an object that implements Countable
[2020-09-19 20:38:54] (ERROR in xPDO::getService @ /var/www/u0864090/data/www/sbw.group/core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2020-09-19 20:38:55] (ERROR in modRestCurlClient::__construct @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Opening and ending tag mismatch: error line 2 and response
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag error line 2
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag response line 1
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:38:55] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 245) Could not connect to provider at: http://api.stopforumspam.org/
[2020-09-19 20:51:09] (ERROR in xPDO::getService @ /var/www/u0864090/data/www/sbw.group/core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2020-09-19 20:51:09] (ERROR in modRestCurlClient::__construct @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Opening and ending tag mismatch: error line 2 and response
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag error line 2
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag response line 1
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:51:09] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 245) Could not connect to provider at: http://api.stopforumspam.org/
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/cache/includes/elements/modsnippet/52.include.cache.php : 46) Евгений; +7 (917) 128-6331; profilmet495@mail.ru; Отправить
[2020-09-19 20:57:52] (ERROR in xPDO::getService @ /var/www/u0864090/data/www/sbw.group/core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2020-09-19 20:57:52] (ERROR in modRestCurlClient::__construct @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Opening and ending tag mismatch: error line 2 and response
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag error line 2
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): Entity: line 3: parser error : Premature end of data in tag response line 1
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string(): </response>
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 240) PHP warning: simplexml_load_string():            ^
[2020-09-19 20:57:52] (ERROR @ /var/www/u0864090/data/www/sbw.group/core/model/modx/rest/modrestclient.class.php : 245) Could not connect to provider at: http://api.stopforumspam.org/
[2020-09-19 21:00:11] (ERROR in resource 1 @ /var/www/u0864090/data/www/sbw.group/core/model/modx/modparser.class.php : 1373) Bad link tag `[[~]]` encountered
[2020-09-19 21:00:11] (ERROR in resource 1 @ /var/www/u0864090/data/www/sbw.group/core/model/modx/modparser.class.php : 1373) Bad link tag `[[~]]` encountered
Amsterdam
Amsterdam
Добрый день Александр!
Не могу понять, почему не кэшированный вывод сниппета не срабатывает в конструкции is then?
Сравниваю дату на странице ресурса, если вызываю его кэшированным, то конструкция срабатывает:
[[*publishedon:date=`%Y%m%d`:is=`[[today]]`:then=`дата равна`:else=`дата не равна`]]
а если не кэшированным:
[[*publishedon:date=`%Y%m%d`:is=`[[!today]]`:then=`дата равна`:else=`дата не равна`]]
то не срабатывает. всегда выводит «дата не равна».

сниппет today выглядит так:
return date("Ymd");
Александр Мальцев
Александр Мальцев
Привет!
Перепишите код сниппета today на следующий:
<?php
return date('Ymd') == date('Ymd', $modx->resource->publishedon);
После этого на странице ресурса используйте его так:
[[!today:is=`1`:then=`дата равна`:else=`дата не равна`]]

Как вариант, можно вообще всё в сниппете today прописать:
<?php

if (date('Ymd') == date('Ymd', $modx->resource->publishedon)) {
  return "Дата равна";
} else {
  return "Дата не равна";
}
На странице его использовать так:
[[!today]]
Amsterdam
Amsterdam
Спасибо Александр, работает!
arkadyexp
arkadyexp
Здравствуйте!
Подскажите пожалуйста, использую простой php код для загрузки файлов по ссылке:
<?php
$link = 'https://www.google.ru/images/srpr/logo11w.png';     
$uploaddir = $modx->getOption('base_path').'files/';
$uploadfile = $uploaddir.basename($link);
если его использовать в обычном файле php, то он срабатывает и файл загружается, а если использовать в сниппете modx, то загрузки на хостинг не происходит, почему так? Папка создана, сниппет на странице выведен.

хм, решил проблему дописав
if (copy($link, $uploadfile)){
     echo "GOOD";
}else
{echo "NO GOOD";}
Сергей
Сергей
Есть сформированный блок ссылок (формируются в сниппете и отображаются на главной странице сайта) при нажатии на которые открывается страница с вызовом pdoResources и происходит выборка ресурсов. Как мне передать в параметр &where json массив для дополнительных условий выборки и как его там правильно принять. Фактически туда надо покласть период за который будет происходить выборка ресурсов. И писать сниппет-обертку для pdoResources такого технологичного дополнения рука не подымается.
Спасибо.
Александр Мальцев
Александр Мальцев
Вы не можете просто передать в where json массив. Его необходимо разобрать и составить из его параметров необходимое условие. Это действие необходимо выполнить в сниппете (его необходимо создать). А в параметре &where сниппета pdoResources указать его вызов.
Сергей
Сергей
Ну а если я сформирую необходимое условие в том сниппете где формируются ссылки и как параметр передам это условие на страницу где есть вызов pdoResources? Так можно?
Александр Мальцев
Александр Мальцев
Да, можно. Но, вам нужно задать дополнительный параметр для сниппета, с помощью которого определять, что возвращать в качестве значения (ссылки или условие для pdoResource).
Сергей
Сергей
Извиняюсь за излишнюю настойчивость, наверно я не совсем понимаю.
В сниппете я формирую ссылку так
$url = $modx->makeUrl(544, '', array('month' => $resource['month'], 'year' => $resource['year']));
При нажатии на ссылку мне надо поймать month и year на странице с id=544 и как то там их использовать в вызове pdoResources. Или уже передать туда готовую json строку и вставить в условие &where. Как мне обратиться к тем параметрам что передаются на страницу?
Если вызвать pdoResources без параметра &tpl то видно что туда приходит
[request] => Array
        (
            [q] => archive.html
            [month] => 5
            [year] => 2017
        )
в таком случае можно ведь передать уже готовое условие, а потом сразу подставить в &where ?? Как прописать строку &where если условие передать на страницу в переменной str, так что ли?
&where=`request[str]` 
Сергей
Сергей
Решение нашел.
На страницу где происходит выборка документов за период методом GET передаются 2 параметра date_s и date_e, соответственно начало и конец периода в Unix Timestamp формате.
Пример адреса
http://mysite.ru/archive.html?date_s=1493586000&date_e=1496264399
Условие в секции &where для выборки документов за период
&where=`{"publishedon:>=":"[[!#get.date_s]]","publishedon:<=":"[[!#get.date_e]]"}`
Все.
Василий
Василий
Решил очисткой core/cache вручную.
Почему-то из панели управления не чистится. Что-то с правами доступа?
Александр Мальцев
Александр Мальцев
Если что-то настраивали, то возможно… Посмотрите может что-то есть в журнале ошибок.
Если есть резервная копия, то попробуйте откатить на неё. Или же поверх «накатите» такую же сборку MODX и переустановите компоненты.
Василий
Василий
Добрый день, Александр.
Перестали работать все сниппеты: pdoTools, Tickets, даже визуальный редактор. Теги сниппета выводят пустоту. Никак не найду причину. Может в системных настройках чтото такое есть?
Александр
Александр
Добрый день. а как проверить снипет на предмет пустоты?
Александр Мальцев
Александр Мальцев
Здравствуйте, лучше реализовать всю логику внутри сниппета.
Попробуйте использовать фильтры вывода.
Аноним
Аноним
вам больше подойдут чанки и их параметры
Аноним
Аноним
Александр, подскажите, пожалуйста, можно ли как-то использовать сниппеты с параметрами для вывода повторяющихся кусков кода, у которых отличается только какой-то элемент? Или можно решить задачу каким-то другим способом?
Сейчас поясню на примере, что я имею в виду. Например, на страницах сайта планируется вставлять видео из Ютуба. Соответственно, на нем же можно брать код для встраивания видео. У всех встраиваемых видео будет отличаться только ID видео. Поэтому хотелось бы задать для вывода видео чанк, и как-то в виде параметра при выводе указывать ID видео, чтобы делать вставку видео в ресурс одной простой понятной строкой. Соответственно, ID видео придется указывать каждый раз вручную.
Просто из вашей статьи я сделал вывод, что сниппет можно вызывать уже с четко прописанными параметрами. А как быть, когда параметры нужно каждый раз указывать вручную индивидуально?
Если вы знаете какое-то решение подобной задачи, поделитесь, пожалуйста!