Для получения данных из списка в шаблонах, используется метод 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 р/ч
На первый взгляд, это может показаться громоздко, и не очень удобно. Но на самом деле, такой подход позволяет реализовать довольно гибкое управление древовидными структурами. Если рассматривать приведённый пример с ценами на услуги, то списки "Грузоперевозки" и "Охрана", можно использовать отдельно, на страницах сайта соответствующих тематик. При этом изменения цен будут сразу видны как на этих страницах, так и на странице с ценами, разделёнными по категориям. Если же Вы создадите многоуровневое меню по примеру описанного прайс-листа, то сможете использовать списки подразделов для формирования разных типов меню (например в основное меню выводить одни подразделы, а в подвале - другие, при этом часть подразделов выводить и там и там). Думаю важно отметить, что вложенность списков не ограничена.