Как создать информационный канал
Материал из SAPID Live Encyclopedia.
Содержание |
Шаблон
Прежде всего мы создаем шаблон. Для это помещаем в папку /views/delivery/templates/ файл скажем news.tpl
В этом файле мы задаем оформление страницы с новостями. Например,
Здесь сначала подключается код подшаблона с "шапкой", затем мы получаем из DDC menu код меню сайта. Затем DDC infochannel возвращает нам код ленты новостей. И наконец, подключается код "подвала" страницы из подшаблона
Набор полей
Нам надо также сообщить системе какой набор полей ввода использовать, что бы запросить содержание новости. Следует создать набор полей в папке /views/delivery/fieldsets/ Давайте создадим там файл news.xml
Здесь предполагается только одно поле desc (тип article - т.е. с визуальным редактором, подсказка при запросе Описание). Обратите внимание на атрибут type элемента sapi:fieldset. Он должен совпадать с именем файла.
DDC (функциональный сценарий)
Самое время создать DDC infochannel. Идем в папку /views/delivery/ddcs/ создаем там файл infochannel.xml.
Давайте рассмотрим следующий пример содержания DDC infochannel
Обратите внимание на атрибут name элемента sapi:ddc. Он должен совпадать с именем файла.
Как мы видим здесь есть два условия: neq(record_id.value,0) и eq(record_id.value,0) В первом случае переменная окружения record_id не равна 0 и во-втором равна. Значит первый случай рассматривается процессором если пользователь выбрал какую либо новость (в этом случае record_id содержит ID выбранной записи/новости) на просмотр и второй когда пользователь запрашивает список новостей.
Итак в первом условии мы задаем код который вернет DDC, когда пользователь откроет новость на просмотр. Где &record_name.value; - имя записи (заголовок новости), &record_data_имяполя.value;- содержание новости.
Во-втором условии мы формируем перечисление. Используется приложение системы get_infochannel()- которое как раз обслуживает списки записей. Параметр withdata заставляет его подымать данные (помимо атрибутов) записей для этого списка и параметр limit - задает ограничение выборки записей списка.
Элемент sapi:ifempty - определяет что вернет приложение в случае пустого списка Элемент sapi:fallback - определяет сообщение в случае возникновения ошибки в ходе работы этого приложения
Если список получен, надо надо указать как его оформлять. По условию isset(this.this.name.value) - запись с заголовком (можно true или 1 для любой записи возвращенного списка). Далее &this.this.href.value; - содержит ссылку на описание записи (новости) и &this.this.name.value; - ее заголовок.
Осталось лишь определить одному из разделов дерева структуры (Новости), что он будет содержать записи и назначить ему шаблон news.tpl. Перейти в меню Записи и выбрать это раздел. При добавлении записей указывать fieldset - news.xml
Ну что? Здесь все просто. Как добавить постраничную навигацию к списку?
Постраничная навигация
Достаточно добавить условие в DDC infochannel
Здесь &this.enum.page_prev_style_display;/&this.enum.page_next_style_display; - содержат либо none, либо block. Что можно использовать в стиле чтобы показывать или не показывать стрелку назад/вперед (допустим когда достигнут конец списка) &this.enum.page_prev/next_href; -ссылки для этих стрелок и джалее вызов DDC pagination из дистрибутивного пакета




