Для получения данных из списка в шаблонах, используется метод dalists::getDataList, которому потребуется передать id списка.
Пример 1. Простое получение данных из списка:
допустим есть некий список, id которого — 4. Пусть в нём будут содержаться Ф.И.О. сотрудников. Структура этого списка состоит из четырёх текстовых полей:
- position - должность
- lastname - фамилия
- firstname - имя
- patronymic - отчество
Внесём в этот список следующие данные:
| position | lastname | firstname | patronymic |
|---|---|---|---|
| директор | Иванов | Иван | Иванович |
| водитель | Петров | Пётр | Петрович |
| водитель | Степанов | Степан | Степанович |
| охранник | Хайхороев | Сайид | Ахмедович |
Теперь давайте выведем всё это на страницу:
<div class="dalists-wrap">
{$items = $wa->dalists->getDataList(4)}
{foreach $items as $item}
{foreach $item as $key => $value}
{$key}: {$value};
{/foreach}
<hr />
{/foreach}
</div>
Результат будет таким:
position: директор; lastname: Иванов; firstname: Иван; patronymic: Иванович;position: водитель; lastname: Петров; firstname: Пётр; patronymic: Петрович;
position: водитель; lastname: Степанов; firstname: Степан; patronymic: Степанович;
position: охранник; lastname: Хайхороев; firstname: Сайид; patronymic: Ахмедович;
Пример 2. Получение данных с фильтрацией результатов:
Если потребуется вывести не все записи, а только информацию о водителях, то можно использовать массив с фильтрами, который передаётся в метод dalists::getDataList вторым параметром
<div class="dalists-wrap">
{$items = $wa->dalists->getDataList(4, ['position' => 'водитель'])}
{foreach $items as $item}
{foreach $item as $key => $value}
{$key}: {$value};
{/foreach}
<hr />
{/foreach}
</div>
Результат будет таким:
position: водитель; lastname: Петров; firstname: Пётр; patronymic: Петрович;position: водитель; lastname: Степанов; firstname: Степан; patronymic: Степанович;
Чтобы вывести водителей и охранников, в качестве значения фильтра, можно передать массив:
<div class="dalists-wrap">
{$items = $wa->dalists->getDataList(4, ['position' => ['водитель', 'охранник']])}
{foreach $items as $item}
{foreach $item as $key => $value}
{$key}: {$value};
{/foreach}
<hr />
{/foreach}
</div>
Результат будет таким:
position: водитель; lastname: Петров; firstname: Пётр; patronymic: Петрович;position: водитель; lastname: Степанов; firstname: Степан; patronymic: Степанович;
position: охранник; lastname: Хайхороев; firstname: Сайид; patronymic: Ахмедович;
Если же нужны только водители по фамилии "Петров", то нужно передать 2 параметра для фильтрации:
<div class="dalists-wrap">
{$items = $wa->dalists->getDataList(4, ['position' => 'водитель', 'lastname' => 'Петров'])}
{foreach $items as $item}
{foreach $item as $key => $value}
{$key}: {$value};
{/foreach}
<hr />
{/foreach}
</div>
Результат будет таким:
position: водитель; lastname: Петров; firstname: Пётр; patronymic: Петрович;Пример 3. Построение древовидной структуры используя связи элементов с другими списками, на примере структурированного прайс-листа:
Предположим, Вы решили сформировать на сайте прайс лист, разделив стоимость услуг (пусть это будет прайс на услуги) по категориям. Для этого Вам потребуется создать несколько списков с ценами, и список с категориями услуг. Спискам с ценами нужно будет указать одинаковый тип, пусть это будет "prices". И эти списки будут иметь одинаковую структуру:
- name - название услуги
- price - цена
А список с категориями услуг будет содержать поле с типом "Список", для связи со списками цен. Его структура будет такой:
- section_name - название куатегории услуг
- prices - выбор списка с ценами (тип: "Список", тип списков для выбора: "prices")
Для простоты, давайте создадим всего две категории услуг. Для начала создадим два списка с ценами для этих услуг и заполним их. Первый назовём "Грузоперевозки" и заполним такими данными:
| name | price |
|---|---|
| Перевозка крупногабаритных грузов | 700 р/ч |
| Перевозка хрупких грузов | 800 р/ч |
| Квартирный переезд | 500 р/ч |
Второй пусть будет "Охрана", и заполним так:
| name | price |
|---|---|
| Телохранитель на час | 8000 р/ч |
| Сопровождение ценных грузов | 3000 р/ч |
Теперь заполним список с категориями цен (допустим его ID получится 7):
| section_name | services |
|---|---|
| Транспортные услуги | Выбираем список "Грузоперевозки" |
| Услуги охраны | Выбираем список "Охрана" |
Теперь давайте выведем цены на странице:
<div class="dalists-wrap">
{$sections = $wa->dalists->getDataList(7)}
{foreach $sections as $section}
<h5>{$section.section_name}</h5>
{foreach $section.services as $service}
{$service.name} - {$service.price}<br/>
{/foreach}
<hr/>
{/foreach}
</div>
Результат будет таким:
Транспортные услуги
Перевозка крупногабаритных грузов - 700 р/чПеревозка хрупких грузов - 800 р/ч
Квартирный переезд - 500 р/ч
Услуги охраны
Телохранитель на час - 8000 р/чСопровождение ценных грузов - 3000 р/ч
На первый взгляд, это может показаться громоздко, и не очень удобно. Но на самом деле, такой подход позволяет реализовать довольно гибкое управление древовидными структурами. Если рассматривать приведённый пример с ценами на услуги, то списки "Грузоперевозки" и "Охрана", можно использовать отдельно, на страницах сайта соответствующих тематик. При этом изменения цен будут сразу видны как на этих страницах, так и на странице с ценами, разделёнными по категориям. Если же Вы создадите многоуровневое меню по примеру описанного прайс-листа, то сможете использовать списки подразделов для формирования разных типов меню (например в основное меню выводить одни подразделы, а в подвале - другие, при этом часть подразделов выводить и там и там). Думаю важно отметить, что вложенность списков не ограничена.









