Примеры

ListChild: Примеры

Примеры 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)

Пример использования во 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();" автоматически отправляет данные формы после каждого изменения элемента формы.

Переключатели radio (frontend)

Пример 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, без пустого поля в начале списка. Запомнит выбранное значение.

Флажки checkbox (frontend)

Пример 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.

Вывод id найденных документов

Вывод идентификаторов найденных документов

[[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

При использовании параметра 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>