Списки

Списки

Позволяет создавать списки для хранения данных.

1 оценка

Далее просто выберите подходящий тарифный план облака Webasyst и продолжайте использовать «Списки» за +239 /месяц к стоимости тарифа.


Уже есть Webasyst?
Лицензия для установки «Списки» в свой Webasyst или на свой сервер:

Ваш отзыв
Установок
< 10
Разработчик
Поддержка

Для получения данных из списка в шаблонах, используется метод 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 р/ч


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