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

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

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

В файле 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

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

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

В файле 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 исполняется на каждом хите.

В файле 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, необходимо воспользоваться методами текущего шаблона:

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

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

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

Т.к. переменная $this в component_epilog.php обращается к классу CBitrixComponent, то для того чтобы использовать функционал шаблона в component_epilog.php, необходимо обратиться к шаблону компонента из самого компонента:

$this->getTemplate()->addExternalJs("path-to-js-script");

Подключать данный так скрипты не целесообразно- лучше делать подключение из result_modifier.php, чтобы скрипты попадали в кешируемую область.

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

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

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

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

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

В курсе веб-разработчика 1С-Битрикс появилась таблица с доступностью переменных .

Передать языковые фразы в JS

Сначала считаем языковые фразы в переменную:

$messages = Loc::loadLanguageFile(__FILE__);

После этого, в js-скрипте можем получить массив языковых файлов:

BX.message(<?=CUtil::PhpToJSObject($messages)?>);
Количество показов: 15306
31.07.2015

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

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.