Как создать информационный канал

Материал из SAPID Live Encyclopedia.

Содержание

Шаблон

Прежде всего мы создаем шаблон. Для это помещаем в папку /views/delivery/templates/ файл скажем news.tpl

В этом файле мы задаем оформление страницы с новостями. Например,

Изображение:Cmf_ic01.jpg

Здесь сначала подключается код подшаблона с "шапкой", затем мы получаем из DDC menu код меню сайта. Затем DDC infochannel возвращает нам код ленты новостей. И наконец, подключается код "подвала" страницы из подшаблона

Набор полей

Нам надо также сообщить системе какой набор полей ввода использовать, что бы запросить содержание новости. Следует создать набор полей в папке /views/delivery/fieldsets/ Давайте создадим там файл news.xml

Изображение:Cmf_ic03.gif

Здесь предполагается только одно поле desc (тип article - т.е. с визуальным редактором, подсказка при запросе Описание). Обратите внимание на атрибут type элемента sapi:fieldset. Он должен совпадать с именем файла.

DDC (функциональный сценарий)

Самое время создать DDC infochannel. Идем в папку /views/delivery/ddcs/ создаем там файл infochannel.xml.

Давайте рассмотрим следующий пример содержания DDC infochannel

Изображение:Cmf_ic02a.gif

Обратите внимание на атрибут 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 Изображение:Cmf_ic04.gif

Здесь &this.enum.page_prev_style_display;/&this.enum.page_next_style_display; - содержат либо none, либо block. Что можно использовать в стиле чтобы показывать или не показывать стрелку назад/вперед (допустим когда достигнут конец списка) &this.enum.page_prev/next_href; -ссылки для этих стрелок и джалее вызов DDC pagination из дистрибутивного пакета

Личные инструменты
Инструменты


SourceForge.net Logo



eXTReMe Tracker