- В панель инструментов публичного раздела добавлено создание страницы и раздела по шаблону (кнопка "Создать" - "Страницу по шаблону").
- Добавлена поддержка "активных" шаблонов страниц. Шаблон может запросить и обработать данные в мастере добавления страницы.
Что же такое "активный" шаблон, что он может делать, и какой он на вкус? В новый дистрибутив корпоративного портала 8.5 (и через обновления) будет добавлен шаблон "Библиотека документов". Давайте рассмотрим его подробнее.[spoiler]
Вы пробовали когда-нибудь добавить новую библиотеку в раздел "Документы"? Обычно процедура выглядит примерно так. Создаем подраздел. Редактируем индексную страницу, добавляем на нее компонент "Библиотека документов". При настройке параметров компонента замечаем, что необходимо создать новый инфоблок и новый форум для комментариев. Закрываем страницу, идем в панель управления. Создаем инфоблок, форум, настраиваем права доступа. Возвращаемся на страницу, редактируем параметры компонента. В течение всей процедуры вспоминаем разработчиков корпортала.
В обновленном корпортале все будет намного приятнее. Переходим в раздел "Документы". Для создания подраздела нажимаем кнопку "Создать", выбираем пункт "Раздел по шаблону", в списке шаблонов выбираем "Библиотеку документов":
В мастере добавления раздела указываем название, добавляем пункт в меню (все как и раньше):
А вот на следующем шаге нас ждет небольшой сюрприз. Начинает работать тот самый "активный" шаблон библиотеки документов:
Предлагается выбрать или создать новый инфоблок, при этом для нового инфоблока сразу можно настроить права доступа. Если мы хотим разрешить комментарии, предлагается создать или выбрать форум. Вводим название библиотеки, настраиваем права доступа и нажимаем "Готово"! Если мы на первом шаге не указали "редактировать страницу", то мы сразу видим готовый раздел с библиотекой:
Можно сразу работать с библиотекой и загружать файлы.
Конечно, после создания можно донастроить параметры компонента или отредактировать инфоблок или форум. Вот они, кстати, в панели управления:
В будущем мы будем добавлять похожие мастера для других типов страниц и разделов. Например, к выходу готов шаблон "Форум (ЧПУ)".
Теперь самое интересное: как же это все устроено "изнутри"? Могут ли разработчики проектов создавать собственные шаблоны страниц? Да, могут!
Внимание, далее информация для разработчиков.
Шаблон - это папка в разделе page_templates в шаблоне сайта. Как вы помните, page_templates содержит шаблоны новых страниц (они, кстати, тоже выводятся в меню кнопки "Создать по шаблону"). Путь к шаблону библиотеки выглядит так: "/bitrix/templates/.default/page_templates/library". В папке шаблона находится файл шаблона template.php и папка с языковыми сообщениями. Могут быть и другие папки, с картинками например.
Шаблон должен определить класс с набором методов: для описания, для построения формы в мастере и для создания страницы. Структура файла template.php (упрощенно):
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); CPageTemplate::IncludeLangFile(__FILE__); class CLibraryPageTemplate { function GetDescription() { return array( "name"=>GetMessage("library_wizard_name"), "description"=>GetMessage("library_wizard_title"), "icon"=>"/bitrix/themes/.default/start_menu/iblock/type.gif", "modules"=>array("webdav", "iblock"), ); } function GetFormHtml() { //name $s = ' <tr class="section"> <td colspan="2">'.GetMessage("library_wizard_settings").'</td> </tr> <tr> <td class="bx-popup-label bx-width30">'.GetMessage("library_wizard_lib_name").'</td> <td><input type="text" name="library_TITLE" value="'.GetMessage("library_wizard_lib_name_val").'" style="width:90%"></td> </tr> '; return $s; } function GetContent($arParams) { $s = '<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?> <?$APPLICATION->IncludeComponent("bitrix:webdav", ".default", array( "STR_TITLE" => "'.EscapePHPString($_POST['library_TITLE']).'", ), false );?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>'; return $s; } } $pageTemplate = new CLibraryPageTemplate; ?> |
В заключение хочу спросить: какие еще шаблоны были бы полезны владельцам сайта или корпортала? Какие еще типы страниц не тривиальны при создании? Спасибо.
Когда планируется выпуск 8.5.2 хотя бы в Бету?
тривопроса:1. Чем отличается "создание по шаблону" от того, что сначала создаешь раздел, а потом кидаешь компонент?2. Смысл так и не понял. Ну КП далек от меня, а я от него. Возьмем тот же форум, что вы затронули. Смысл делать отдельный можно сказать мастер для форума, если он по сути устанавливается только раз на сайте?
Нет, я понял, что мастер создает еще и ИБ, но по сути мы делаем целый космодром всего для одной ракеты. Можно, пожалуйста, более жизненный пример.
3. Как понял, в панели появляются ссылки на шаблоны когда размещаешь хоть один мастер?
3. Конечно, нет шаблонов - нет ссылок в панели.
Создал мастер:
Все появилось в меню, все круто, я уже обрадовался, но страница создалась такая:
Зачем система воткнула $APPLICATION->SetTitle("Новый раздел"); и как это убрать?
Оно как бы не страшно, но педантизм покоя не дает
В папке page_templates создаете файл empty.php с содержимым:
При желании добавляете описание в .content.php в той же папке:
Наслаждаетесь.
А $APPLICATION->SetTitle добавил мастер создания раздела. На то он и мастер, зря что ли название спрашивает?
Например, зачем редактору сайта у которого есть права только на правку раздела "новости" видеть вкладку "Разработка". Зачем ему беспокоиться зачем эта вкладка нужна и надо ли на нее нажимать...
То же самое и с этой новой фишкой.
И еще одна просьба. Можно ли как-то немного терминологию подправить. Не уверен, что каждый пользователь (который управляет из публички и не очень хочет вникать в структуру хранения данных) поймет что такое "информационный блок". Предложение простое, написать вместо "создать новый информационный блок" так: "создать новое хранилище (информационный блок)". Как считаешь, будет это полезно?
Я не настаиваю, возможности изменить заголовок мне будет достаточно.