====== Пакет CMS ====== Основная функции пакета - разработка административного web-интерфейса приложения. Помимо этого пакет предоставляет возможности по созданию и выводу страниц и текстовых блоков. ====== Установка ====== Пакет базируется на функционале WEB_APP, и представляет из себя набор моделей, контроллеров, шаблонов и сервисов. Самый простой способ создать приложение - воспользоваться утилитой limb.php: limb project_create Для ручного создания приложения на базе пакета CMS воспользуйтесь [[limb3:ru:cms:cms_manual_setup|инструкцией]]. ====== Текстовые страницы ====== Данный функционал позволяет создавать и управлять отдельными страницами вашего сайта. Текст страницы вписывает в шаблон template/document/item.phtlm, который может быть перекрыт в вашем приложении. ====== Текстовые блоки ====== Текстовые блоки представляют из себя куски текста, которые можно редактировать из административного интерфейса, а потом легко вставлять в любое место вашего сайта. Блоки объявляются в конфигурационном файле **text_blocks.conf.php**: array('title' => 'Подвал Сайта', 'content' => '

Подвал

'), ); Поле **content** это первоначальное содержимое блока. После редактирования содержимое будет храниться и извлекаться из базы данных, а не из конфигурационного файла. Получить содержимое блоков можно следующим образом: echo lmbCmsTextBlock::getRawContent('footer'); ====== Расширение административного интерфейса ====== :!: Для автоматической генерации административного интерфейса вы можете воспользоваться пакетом [[limb3:ru:packages:constructor|CONSTRUCTOR]] :!: Все контроллеры, имена которых начинаются с **admin** считаются частью административного интерфейса, и проверяют пользователя на "залогиненность" (см. lmbCmsAccessPolicyFilter) Разберем на примере добавления новостей на сайт: ==== Схема базы ==== Для начала создадим таблицу **news**: CREATE TABLE `skel`.`news` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL DEFAULT '', `content` longtext NOT NULL, `ctime` int(11) NOT NULL, PRIMARY KEY (`id`) ); ==== Создание модели и контроллера ==== Для создания контроллеров, типичных для CRUD'ов, удобнее всего воспользоваться классом lmbAdminObjectController, в качестве базового. Для этого сначала создадим модель (файл /src/model/News.class.php): и контроллер (файл /src/controller/AdminNewsController.class.php) ==== Создание шаблонов ==== Добавим шаблоны для отображения списка новостей (файл template/admin_news/display.phtml): {{wrap with="admin_page_layout.phtml" into="content_zone"}}
{{list using='{$#items}' parity='{$parity}'}} {{include file="_admin_object/actions.phtml"/}}
{{list:item}} {{/list:item}}
#IDЗаголовокДатаДействия
#{$item.id}{$item.title}{$item.ctime|date:'Y'} {{apply template="object_action_edit" item="{$item}" icon="page_white_edit" /}} {{apply template="object_action_delete" item="{$item}" icon="page_white_delete" /}}
{{/list}}
{{/wrap}} , шаблон формы (файл template/admin_news/include/form_fields.phtml) {{include file='_admin/form_errors.phtml'/}}
{{input type="text" name="title" id="title" title="Заголовок"/}}
{{label for="content"}}Текст:{{/label}}
{{textarea name="content" id="content" title="Текст"/}}
{{include file='_admin/form_buttons.phtml'/}}
, шаблоны для создания и редактирования новости (файлы template/admin_news/create.phtml и template/admin_news/edit.phtml) {{wrap with="admin_modal_page_layout.phtml"}} {{into slot='content_zone'}} {{form id='object_form' name='user_form' method='post' enctype="multipart/form-data"}}

Добавление новости

{{include file='admin_news/include/form_fields.phtml'/}} {{/form}} {{/into}} {{/wrap}}
{{wrap with="admin_modal_page_layout.phtml" into="content_zone"}}

Редактирование записи {$#item.title}

{{form id='object_form' name='object_form' method='post' enctype="multipart/form-data"}} {{include file='admin_news/include/form_fields.phtml'/}} {{/form}} {{/wrap}}
==== Добавление пункта в меню ==== Для того, чтобы расширить стандартное меню необходимо добавить необходимую опцию в navigation-конфиг. Для этого создадим в нашем проекте файл navigation.conf.php, со следующим содержимым: 'Новости', 'url' => '/admin_news', 'icon' => '/shared/cms/images/icons/page.png', );