Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Битрикс Битрикс
01.11.2021

Битрикс. Узнать где находиться шаблон компонента

В 1С-Битрикс иногда бывает сложно понять, где именно лежит шаблон компонента.

Особенно это актуально:

  • в больших проектах;
  • при многосайтовости;
  • при использовании Аспро;
  • если шаблон переопределен;
  • при работе со сторонними модулями.

Ниже пример кода, который позволяет определить путь к шаблону компонента.

Получение пути шаблона компонента

<?

// Название компонента
$componentName = 'sotbit:catalog.section';

// Название шаблона
$componentTemplate = 'catalog';

$component = new CBitrixComponent();

$component->InitComponent(
    $componentName,
    $componentTemplate
);

$component->initComponentTemplate();

// Выводим путь шаблона компонента
echo $component->__template->GetFolder();

?>

Что делает этот код

Код:

  • инициализирует компонент;
  • подключает шаблон;
  • получает объект шаблона;
  • выводит путь к папке шаблона.

InitComponent()

Метод:

InitComponent()

принимает:

  • название компонента;
  • название шаблона.

Пример компонента

sotbit:catalog.section

Здесь:

  • sotbit — пространство имен;
  • catalog.section — название компонента.

Инициализация шаблона

Метод:

initComponentTemplate()

подключает шаблон компонента.

Получение пути

Метод:

GetFolder()

возвращает:

  • полный путь шаблона компонента.

Пример результата

/local/templates/main/components/sotbit/catalog.section/catalog

Когда это полезно

  • поиск шаблонов компонентов;
  • отладка Битрикс;
  • поиск переопределений;
  • работа с Аспро;
  • многосайтовость;
  • разработка кастомных шаблонов.

Почему шаблон сложно найти

В Битрикс шаблон компонента может лежать:

  • в шаблоне сайта;
  • в local/;
  • в bitrix/templates/;
  • внутри модуля;
  • в default-шаблоне компонента.

Стандартные пути шаблонов

Шаблон сайта

/local/templates/ШАБЛОН/components/

Стандартный шаблон

/bitrix/components/

Шаблон модуля

/bitrix/modules/

Важно про __template

Свойство:

$component->__template

является внутренним объектом шаблона.

Обычно напрямую его используют редко, но для отладки это удобно.

Более современный вариант

В новых проектах можно использовать:

$this->GetFolder()

внутри самого шаблона компонента.

Пример внутри template.php

<?
echo $this->GetFolder();
?>

Итог

Если непонятно, где находится шаблон компонента в 1С-Битрикс, можно программно получить путь через:

$component->__template->GetFolder()

Это особенно удобно при работе с крупными проектами и готовыми решениями.

24 просмотров

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться