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"/}}
#ID Заголовок Дата Действия
{{list:item}}
#{$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:item}}
{{/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',
);