Приклади сніпет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
=
на @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>