Битрикс. Шаблон компонента

27.07.2018

Теги: .description.php.parameters.phpCMSIncludeComponentWeb-разработкаБитриксКомпонентШаблонКомпонента

Шаблоны компонента делятся на системные и пользовательские:

  • Системные шаблоны поставляются вместе с компонентом и лежат в подпапке 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. И только после этого происходит подключение шаблона компонента из папки компонента.

Если namespacebitrix (/bitrix/components/bitrix/), то это папка для шаблонов стандартных компонентов. Если namespace — выбранное разработчиком пространство имен (/local/components/ivanov/ или /bitrix/components/ivanov/), то это папка для шаблонов самописных компонентов.

Шаблон в файле компонента component.php подключается командой:

$this->IncludeComponentTemplate($templatePage = "");

где $templatePage:

  • для комплексного компонента — имя текущей страницы;
  • для обычного компонента — пустая строка.

Вызов компонента

При вызове компонента указываются

  1. Пространство имен + имя компонента: namespace:component;
  2. Имя шаблона, если пустая строка — подразумевается .default;
  3. Параметры самого компонента
  4. Объект родительского комплексного компонента, если компонент подключается из шаблона комплексного компонента. В шаблоне комплексного компонента определена переменная $component, которая содержит объект этого комплексного компонента.
  5. Массив, содержащий дополнительные параметры отображения компонента:
    • "HIDE_ICONS"=>"Y" — не показывать панель настройки компонента в режиме редактирования/разработки;
    • "ACTIVE_COMPONENT"=>"N" — отключить компонент (код компонента не подключается).
mixed IncludeComponent(
    string componentName,
    string componentTemplate,
    array arParams=array(),
    object parentComponent=null,
    array arFunctionParams=array()
);

Поиск: .description.php • .parameters.php • CMS • IncludeComponent • Web-разработка • Битрикс • Компонент • Шаблон компонента

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.