Примеры cниппетa для формирование динамического списка дочерних документов.
Пример использования в backend (административной панели)
Сниппет сформирует список в виде: параметр1==значение1||параметр2==значение2
Создайте TV-параметр с типом ввода DropDown List Menu.
В возможных значениях укажите:
@EVAL return $modx->runSnippet('ListChild', array('docid' => 10, 'where' => 'isfolder = 1 and hidemenu = 0'));
Отобразит все опубликованные и неудаленные дочерние контейнеры папки 10, которые отмечены для показа в меню.
Или так:
@EVAL return $modx->runSnippet('ListChild', array('docid' => '10,11,12', 'depth' => 2));
Отобразит все опубликованные и неудаленные дочерние документы, в том числе и контейнеры, папок 10, 11 и 12 до второго уровня вложенности.
Пример использования во frontend (пользовательской части)
Сниппет сформирует список в виде: <option value="значение">параметр</option>
Разместите в шаблоне следующий код:
<form action="[~[*id*]~]"> <select class="form-control"> [[ListChild? &docid=`152` &depth=`1` &where=`isfolder = 0` &emptyfield=`0`]] </select> </form>
Отобразит в виде раскрывающегося списка все опубликованные и неудаленные дочерние документы папки 4, до второго уровня вложенности, которые не являются контейнерами.
Обратите внимание, что в данном примере после выбора из списка любого пункта, форма перегружается и выбранное значение сбрасывается.
Пример использования во frontend с запоминанием выбранных значений
Тегу select
добавьте атрибут name
. Значение атрибута укажите в соответствующем параметре сниппета.
Важно! Не используйте для разных списков одинаковые значения атрибута name.
<form action="[~[*id*]~]"> <select onchange="this.form.submit();" name="dropdown" class="form-control"> [[ListChild? &docid=`18` &name=`dropdown` &emptyfield=`0`]] </select> </form>
Теперь после выбора из списка любого пункта, форма перегружается но выбранное значение сохраняется.
Событие onchange="this.form.submit();"
автоматически отправляет данные формы после каждого изменения элемента формы.
Пример c использованием шаблона в frontend
1. Задача - вывести в виде переключателей.
[[ListChild? &docid=`152` &name=`radio` &tpl=`tplRadio` &selectedValue=`checked="checked"` &emptyfield=`0`]]
Шаблон tplRadio:
<div class="col-lg-3 col-sm-4 col-xs-6"> <div class="radio"> <label> <input type="radio" name="radio" class="colored-blue" value="" onchange="this.form.submit();"> <span class="text"> </span> </label> </div> </div>
Отобразит в виде переключателей все опубликованные и неудаленные дочерние документы папки 4, без пустого поля в начале списка. Запомнит выбранное значение.
Пример c использованием шаблона в frontend
Задача - вывести в виде переключателей.
[[ListChild? &docid=`152` &name=`checkbox` &tpl=`tplCheckbox` &selectedValue=`checked="checked"` &emptyfield=`0`]]
Шаблон tplCheckbox:
<div class="col-lg-2 col-sm-4 col-xs-6"> <label class="csscheckbox csscheckbox-primary"> <input type="checkbox" name="checkbox" class="colored-blue" value="" onchange="this.form.submit();"> <span></span> </label> </div>
Отобразит в виде переключателей все опубликованные и неудаленные дочерние документы папки 4, без пустого поля в начале списка.
Вывод количества найденных документов
[[ListChild? &docid=`152` &count=`1`]]
Отобразит количество опубликованных и неудаленных дочерних документов папки 4.
Вывод идентификаторов найденных документов
[[ListChild? &docid=`152` &tpl=`idTpl` &emptyfield=`0` &separator=`,`]]
Чанк idTpl:
[+value+]
Отобразит список id всех опубликованных и неудаленных дочерних документов папки 4, разделенных запятой.
Вывод заголовков найденных документов
По аналогии с id документа, можно вывести любую переменную шаблона (кроме TV-параметров). Например, если нужно вывести заголовки:
[[ListChild? &docid=`152` &tpl=`idTpl` &emptyfield=`0` &separator=`, ` &value=`pagetitle`]]
Отобразит заголовки всех опубликованных и неудаленных дочерних документов папки 4, разделенных запятой с пробелом.
При использовании параметра where необходимо заменять все =
на @eq
. Например, для того, чтобы вывести идентификаторы всех документов с шаблоном 5 и menuindex равным 0, размещаем такой вызов:
[[ListChild? &docid=`0` &depth=`10` &tpl=`tplId` &emptyfield=`0` &separator=`, ` &where=`template @eq 5 and menuindex @eq 0`]]
Чанк tplId:
[+value+]
Выводим анонс статей
<ul>[[ListChild? &docid=`152` &emptyfield=`0` &tpl=`tplNews` &limit=`3` &sort=`menuindex` &dir=`DESC`]]</ul>
Чанк tplNews:
<li><a href="[~[+value+]~]">[+param+]</a><p>[+desc+]</p></li>
Отобразит анонсы трех статей с кратким описанием.
Выводим подменю
<ul>[[ListChild? &docid=`152` &emptyfield=`0` &tpl=`tplSubmenu` &limit=`3` &sort=`menuindex` &dir=`DESC`]]</ul>
Чанк tplSubmenu:
<li><a href="[~[+value+]~]">[+param+]</a></li>