Битрикс. Узнать где находиться шаблон компонента
В 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()
Это особенно удобно при работе с крупными проектами и готовыми решениями.
Комментарии