FAQ и советы Битрикс


Переменные, доступные в компоненте 2.0 Битрикс

В файлах компонентов доступны стандартные компоненты, благодаря которым можно строить, к примеру, относительные пути. Такие компоненты избавляют от необходимости прописания абсолютных величин в файлах компонента.

1. В файле component.php доступны (в файле самого компонента):

очевидные и постоянно используемые:

  • $arParams — параметры, чтение/изменение, затрагивает одноименный член класса компонента
  • $arResult — результат, чтение/изменение, затрагивает одноименный член класса компонента
  • $APPLICATION, $USER, $DB — все доступны, можно не объявлять их как global в файле component.php
  • $this — естественно ссылка на текущий вызванный компонент (объект класса CBitrixComponent), можно использовать все методы класса CBitrixComponent

дополнительные, локальные для удобства:

  • $componentPath — путь к вызванному компоненту от DOCUMENT_ROOT (пример: /bitrix/components/bitrix/iblock.list)
  • $componentName — имя вызванного компонента (например: bitrix:iblock.list)
  • $componentTemplate — шаблон вызванного компонента (например: «my_template»)

аналогичные значения, если компонент вызван в составе другого компонента, идут отсылки на родительский компонент:

  • $parentComponentPath
  • $parentComponentName
  • $parentComponentTemplate

2. В файле result_modifier.php доступны (в файле модификации шаблона компонента):

  • $arParams - параметры, чтение, изменение не затрагивает одноименный член компонента, но изменения тут отразятся на $arParams в файле template.php
  • $arResult — результат, чтение/изменение, затрагивает одноименный член класса компонента
  • $APPLICATION, $USER, $DB - как обычно, объявлять их как global избыточно $this — ссылка на текущий шаблон (объект, описывающий шаблон, тип CBitrixComponentTemplate)

3. В файле template.php доступны:

  • $arParams - параметры, чтение, изменение не затрагивает одноименный член компонента
  • $arResult — результат, чтение/изменение, затрагивает одноименный член класса компонента (ссылка на поле компонента)
  • $APPLICATION, $USER, $DB — как обычно, объявлять их как global избыточно
  • $this - ссылка на текущий шаблон (объект, описывающий шаблон, тип CBitrixComponentTemplate)
  • $templateName — имя шаблона компонента (например: «.dеfault»)
  • $templateFile — путь к файлу шаблона от DOCUMENT_ROOT (напр. «/bitrix/components/wexpert/iblock.list/templates/.default/template.php»)
  • $templateFolder - путь к папке с шаблоном от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list/templates/.default»)
  • $componentPath - путь к папке с компонентом от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list»)
  • $component — ссылка на текущий вызванный компонент (тип CBitrixComponent)
  • $templateData — массив для записи, обратите внимание, таким образом можно передать данные из template.php в файл component_epilog.php, причем эти данные попадают в кеш, т.к. файл component_epilog.php исполняется на каждом хите.

4. В файле component_epilog.php (эпилог компонента) доступны:

  • $arParams - параметры, чтение, изменение не затрагивает одноименный член компонента
  • $arResult — результат, чтение/изменение не затрагивает одноименный член класса компонента
  • $APPLICATION, $USER, $DB — аналогично, эта «троица» доступна
  • $componentPath — путь к папке с компонентом от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list») 
  • $component — ссылка на $this, читай на строку ниже
  • $this — естественно ссылка на текущий вызванный компонент (объект класса CBitrixComponent), можно использовать все методы класса CBitrixComponent

дополнительные, не явные в component_epilog.php:

  • $epilogFile — путь к файлу component_epilog.php относительно DOCUMENT_ROOT
  • $templateName - имя шаблона компонента (например: «.dеfault»)
  • $templateFile — путь к файлу шаблона от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list/templates/.default/template.php»)
  • $templateFolder — путь к папке с шаблоном от DOCUMENT_ROOT (напр. «/bitrix/components/bitrix/iblock.list/templates/.default»)
  • $templateData — обратите внимание, таким образом можно передать данные из template.php в файл component_epilog.php, причем эти данные закешируются и будут доступны в component_epilog.php на каждом хите!

и в конце, небольшой пример: чтобы получить в result_modifier.php значение $templateFolder, необходимо воспользоваться методами текущего шаблона:

1
$this->__component->__template->__folder
или:
1
$this->GetFolder();
или:
1
$this->__folder

Чтобы передать данные из вложенного в комплексный компонента, можно в компоненте-потомке обратиться к результирующему массиву родительского компонента:

1
$this->__component->getParent()->arResult['CHILD_DATA'] = array(.....);

5. Как передать в script.js шаблона компонена путь к папке, шаблона:

В файле шаблона, template.php, прописываем:

1
2
3
4
5
<script>
BX.message({
    TEMPLATE_PATH: '<? echo $this->GetFolder(); ?>'
});
</script>

И в файле script.js можем этот путь получить:

1
var folderPath = BX.message('TEMPLATE_PATH');


Так же информация в виде таблицы доступна в официальной документации Битрикса: Курс Разработчик Bitrix Framework


Количество показов: 14372
Источник:  http://pai-bx.com/wiki/1c-bitrix/13-variables-available-in-component-2-0/

Возврат к списку