Битрикс. Шаблон компонента
27.07.2018
Теги: .description.php • .parameters.php • CMS • IncludeComponent • Web-разработка • Битрикс • Компонент • ШаблонКомпонента
Шаблоны компонента делятся на системные и пользовательские:
- Системные шаблоны поставляются вместе с компонентом и лежат в подпапке
templates
папки компонента. - Пользовательские шаблоны компонента — шаблоны, которые изменены под нужды конкретного сайта. Они должны лежать в папках шаблонов сайтов (т.е. в
/local/templates/шаблон-сайта/
).
При копировании шаблона компонента средствами системы, они будут расположены по следующему пути:
/local/templates/имя-шаблона-сайта/components/namespace/имя-компонента/имя-шаблона-компонента
Шаблоны компонента определяются по именам. Шаблон по умолчанию имеет имя .default
. Если в настройках параметра компонента не указывается имя шаблона, вызывается шаблон по умолчанию.
Шаблоны компонента могут быть папками или файлами. Если шаблону не требуется перевод на другие языки, собственные стили и прочие ресурсы, такой шаблон можно расположить в файле. В противном случае шаблон следует располагать в директории.
Шаблон простого компонента
Директория шаблона простого компонента может содержать следующие директории и файлы:
- Файл
template.php
, который и является собственно шаблоном; этот файл должен обязательно присутствовать. - Файл
result_modifier.php
, который подключается непосредственно перед подключением шаблона компонента. Этот файл получает на вход массив результатов работы компонента$arResult
и массив параметров вызова компонента$arParams
. Таким образом, можно, например, изменить массив результатов работы компонента под конкретный шаблон. - Файл
component_epilog.php
, который подключается после исполнения шаблона. - Файл
style.css
, который определяет стили, необходимые данному шаблону. - Файл
script.js
, который определяет и подключает javascript, необходимые данному шаблону. - Файл
.description.php
, который содержит название и описание шаблона для визуального редактора. - Файл
.parameters.php
, который содержит описание дополнительных входных параметров шаблона для визуального редактора. - Директорию
lang
, в которой расположены файлы языковых сообщений (переводов) шаблона компонента. - Любые другие директории и файлы с ресурсами, необходимыми шаблону компонента. Например, директорию
image
, содержащая изображения, необходимые шаблону.
Пример файла .description.php
:
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $arTemplateDescription = array( "NAME" => GetMessage("ADV_BANNER_NAME"), "DESCRIPTION" => GetMessage("ADV_BANNER_DESC"), );
Пример файла .parameters.php
:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); if (!CModule::IncludeModule("advertising")) { return; } $arTypeFields = array("-" => GetMessage("ADV_SELECT_DEFAULT")); $res = CAdvType::GetList($by, $order, array("ACTIVE" => "Y"), $is_filtered, "Y"); while (is_object($res) && $ar = $res->GetNext()) { $arTypeFields[$ar["SID"]] = "[".$ar["SID"]."] ".$ar["NAME"]; }
Шаблон комплексного компонента
Шаблон комплексного компонента содержит все те же папки, что и шаблон простого компонента, и дополнительно:
- Шаблоны простых компонентов, которые входят в состав комплексного. Эти шаблоны располагаются в папках вида
/namespace/component/
относительно папки шаблона комплексного компонента. - Простые компоненты, входящие в состав комплексного, подключаются на шаблонах страниц комплексного компонента.
Как система ищет шаблон
- Система сначала ищет шаблон компонента в папке
/local/templates/текущий-шаблон-сайта/components/
; - Если там шаблон не найден, то берётся папка
/local/templates/.default/components/
; - Если шаблон не найден, то производится поиск среди шаблонов, поставляемых с компонентом
- Если это нативный компонент Битрикс, то поиск идет в папке
/bitrix/components/bitrix/
- Если это самописный компонент, то поиск идет в папках
/local/components/ivanov/
и/bitrix/components/ivanov/
- Если это нативный компонент Битрикс, то поиск идет в папке
Особенности поиска:
- Если имя шаблона не задано, то ищется шаблон с именем
.default
. - Если шаблон задан именем папки, то в случае простого компонента в этой папке ищется файл
template.php
, а в случае комплексного —page-name.php
.
Если простой компонент вызывается в составе комплексного, то шаблон простого компонента сначала ищется в составе шаблона комплексного компонента, а потом (если не найден) в собственных шаблонах. Чтобы это правило работало, при вызове простых компонентов в составе комплексного не забывайте указывать четвертым параметром переменную $component
, указывающую на родительский компонент:
$APPLICATION->IncludeComponent( "bitrix:catalog.filter", "", array( // .......... ), $component );
Подключение шаблона
1. Ядро сначала проверяет наличие шаблона компонента в шаблоне текущего сайта:
/local/templates/имя-шаблона-сайта/components/namespace/имя-компонента/имя-шаблона-компонента/template.php
2. Если файла шаблона нет, проверяется шаблон сайта по умолчанию:
/local/templates/.default/components/namespace/имя-компонента/имя-шаблона-компонента/template.php
3. И только после этого происходит подключение шаблона компонента из папки компонента.
namespace
— bitrix
(/bitrix/components/bitrix/
), то это папка для шаблонов стандартных компонентов. Если namespace
— выбранное разработчиком пространство имен (/local/components/ivanov/
или /bitrix/components/ivanov/
), то это папка для шаблонов самописных компонентов.
Шаблон в файле компонента component.php
подключается командой:
$this->IncludeComponentTemplate($templatePage = "");
где $templatePage
:
- для комплексного компонента — имя текущей страницы;
- для обычного компонента — пустая строка.
Вызов компонента
При вызове компонента указываются
- Пространство имен + имя компонента:
namespace:component
; - Имя шаблона, если пустая строка — подразумевается
.default
; - Параметры самого компонента
- Объект родительского комплексного компонента, если компонент подключается из шаблона комплексного компонента. В шаблоне комплексного компонента определена переменная
$component
, которая содержит объект этого комплексного компонента. - Массив, содержащий дополнительные параметры отображения компонента:
"HIDE_ICONS"=>"Y"
— не показывать панель настройки компонента в режиме редактирования/разработки;"ACTIVE_COMPONENT"=>"N"
— отключить компонент (код компонента не подключается).
mixed IncludeComponent( string componentName, string componentTemplate, array arParams=array(), object parentComponent=null, array arFunctionParams=array() );
- Битрикс. Создание простого компонента. Часть 2 из 2
- Битрикс. Создание простого компонента. Часть 1 из 2
- Битрикс. Создание комплексного компонента. Часть 4 из 4
- Битрикс. Создание комплексного компонента. Часть 3 из 4
- Битрикс. Создание комплексного компонента. Часть 2 из 4
- Битрикс. Создание комплексного компонента. Часть 1 из 4
- Битрикс. Как переместить фильтр в шаблоне
Поиск: .description.php • .parameters.php • CMS • IncludeComponent • Web-разработка • Битрикс • Компонент • Шаблон компонента