Полный цикл в digital

Шаблон компонента

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

  1. Системные шаблоны поставляются вместе с компонентом и лежат в подпапке templates папки компонента
  2. Пользовательские шаблоны компонента — шаблоны, которые изменены под нужды конкретного сайта. Они должны лежать в папках шаблонов сайтов (т.е. в /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, содержащая изображения, необходимые шаблону.

Шаблон комплексного компонента

Шаблон комплексного компонента содержит все те же папки, что и шаблон простого компонента, и дополнительно:

  • Шаблоны простых компонентов, которые входят в состав комплексного. Эти шаблоны располагаются в папках вида /namespace/component/ относительно папки шаблона комплексного компонента
  • Простые компоненты, входящие в состав комплексного, подключаются на шаблонах страниц комплексного компонента

Как система ищет шаблон

  • Система сначала ищет шаблон компонента в папке /local/templates/текущий-шаблон-сайта/components/;
  • Если там шаблон не найден, то берётся папка /local/templates/.default/components/;
  • Если шаблон не найден, то производится поиск среди шаблонов, поставляемых с компонентом:
    1) если это нативный компонент Битрикс, то поиск идет в папке /bitrix/components/bitrix/
    2) если это самописный компонент, то поиск идет в папках /local/components/ivanov/ и /bitrix/components/ivanov/

Особенности поиска:

  1. Если имя шаблона не задано, то ищется шаблон с именем .default
  2. Если шаблон задан именем папки, то в случае простого компонента в этой папке ищется файл template.php, а в случае комплексного — page-name.php

Если простой компонент вызывается в составе комплексного, то шаблон простого компонента сначала ищется в составе шаблона комплексного компонента, а потом (если не найден) в собственных шаблонах. Чтобы это правило работало, при вызове простых компонентов в составе комплексного не забывайте указывать четвертым параметром переменную $component, указывающую на родительский компонент:

$APPLICATION->IncludeComponent(
"bitrix:catalog.filter",
"",
array(
// ..........
),
$component
);

Подключение шаблона

Ядро сначала проверяет наличие шаблона компонента в шаблоне текущего сайта:

/local/templates/имя-шаблона-сайта/components/namespace/имя-компонента/имя-шаблона-компонента/template.php

Если файла шаблона нет, проверяется шаблон сайта по умолчанию:

/local/templates/.default/components/namespace/имя-компонента/имя-шаблона-компонента/template.php

И только после этого происходит подключение шаблона компонента из папки компонента.

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

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

  • Для комплексного компонента — имя текущей страницы
  • Для обычного компонента — пустая строка
$this->IncludeComponentTemplate($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()
);
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг