- FAQ и советы Битрикс
- Переменные, доступные в компоненте 2.0 Битрикс
- 1. В файле component.php доступны (в файле самого компонента):
- 2. В файле result_modifier.php доступны (в файле модификации шаблона компонента):
- 3. В файле template.php доступны:
- 4. В файле component_epilog.php (эпилог компонента) доступны:
- Передать переменные в шаблон
- Как вывести переменную из компонента в шаблоне (Битрикс)
- Специальные переменные
- Пользовательские комментарии
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 |
Чтобы передать данные из вложенного в комплексный компонента, можно в компоненте-потомке обратиться к результирующему массиву родительского компонента:
Источник
Передать переменные в шаблон
Чтобы сделать переменную доступную из любого места кода, можно использовать файл bitrix/ .settings.php .
Теперь можно обратиться к свойству «contacts» через следующий код:
Переменные для указанного раздела
Создать переменные, которые будут доступны в указанном разделе, можно через razdel_name/ .section.php .
К данному свойству можно обратиться через следующий код:
Также данное свойство можно изменять в настройках раздела:
Файл «.section.php» можно создать в главной директории сайта, тогда её переменные будут доступны во всех PHP-файлах.
Изменить значение передаваемого свойства можно через метод $APPLICATION->SetDirProperty() :
Передать переменные в шаблон только для текущей страницы
В начале любой страницы с контентом можно вставить метод $APPLICATION->SetPageProperty() .
В результате в свойствах страницы будет доступен новый параметр «city», который можно будет изменить.
Значение к свойству страницы можно получить через метод $APPLICATION->GetPageProperty() .
Также может использоваться метод $APPLICATION->GetProperty() , который в случае отсутствия указанного свойства, проверяет наличие данного свойства у родительских разделов.
Обновлено: 01 ноября 2020 | История изменений
Источник
Как вывести переменную из компонента в шаблоне (Битрикс)
При разработке сайтов на битриксе иногда возникает необходимость вывести определенную локальную переменную из компонента где-нибудь еще, или же использовать её иным способом. В рамках данного примера, такой переменной является значение города из компонента определения пользовательского местоположения. Существуют несколько путей решения данной задачи. В данной заметке рассматривается путь не самый идеальный, но наиболее простой.
Решение данной задачи возможно через объявление искомой переменной глобальной — т.е. видимой и за пределами исходного компонента.
Для внесения ясности можно привести следующий пример из реальной практики автора данной заметки: Требуется получить значение города из компонента «Определитель города» и, на основании полученных данных, вывести тот, или иной баннер.
Шаг 1. Код компонента
Первым делом, мы идем в код шаблона компонента и ищем там искомую переменную/массив данных. Шаблон компонента, как известно, может быть расположен либо в папке с шаблоном сайта, либо в папке /bitrix/components/.
В нашем случае, это часть массива $arResult: $arResult[«USER_CHOICE»]; Если мы попробуем вывести этот массив за пределами компонента, например, в футере (через print_r()), то получим пустое значение.
Переопределяем: $GLOBALS[‘sonicYouth’] = $arResult[«USER_CHOICE»];
Шаг 2. Вывод содержимого массива
Вызываем в футере содержимое нашего массива через print_r:
Источник
Специальные переменные
|
|
|
Имя переменной | Тип | Описание |
---|---|---|
APPLICATION | Г | Глобальный объект класса CMain, предназначен для выполнения большинства общих стандартных операций (вывод заголовка, навигационной цепочки, меню и т.д.). |
USER | Г | Глобальный объект класса CUser, хранит в себе данные авторизации текущего пользователя, предназначен для манипуляции параметрами текущего пользователя. |
DB | Г | Глобальный объект класса CDataBase, предназначен для работы с базой данных. |
DBType | С | Тип базы: «mysql», «mssql» или «oracle». Пример: |
DBHost | С | Для следующих типов базы данных:
Пример: |
DBName | С | Для следующих типов базы данных:
Пример для MySQL:Пример для Oracle: |
DBLogin | С | Логин пользователя для доступа в базу данных. Пример: |
DBPassword | С | Пароль пользователя для доступа в базу данных. Пример: |
DBDebug | С И | Если данная переменная будет равна «true», то в случае ошибки при создании соединения с базой или в любом SQL запросе, сообщение об ошибке и полный текст этой ошибки будет отображаться в браузере. В противном случае — полный текст ошибки будет показан только администратору сайта. Пример: |
DBDebugToFile | С И | Если данная переменная будет равна «true», то все SQL запросы к базе данных и время их выполнения будут записываться в лог-файл /mysql_debug.sql (или /oracle_debug.sql). Данная возможность используется как правило для получения данных о скорости выполнения SQL запросов к базе данных. Ведение подобного лога может серьезно замедлить работу сайта, поэтому пользоваться этим стоит кратковременно. Пример: |
clear_cache | Т | Если значение данной переменной — «Y», то это отключает кеширование на текущей странице. Пример: |
clear_cache_session | Т | Если значение данной переменной — «Y», то это отключает кеширование в рамках сессии. Для включения кэширования — достаточно один раз присвоить этой переменной значение «N». Пример: |
compress | Т | Если значение данной переменной — «Y», то внизу страницы в рамках сессии будет выведена рамка показывающая информацию по сжатию данной страницы модулем «Компрессия»: размер страницы до сжатия, размер страницы после сжатия, коэфициент сжатия. Для отключения вывода данной информации — достаточно один раз присвоить этой переменной значение «N». Пример: |
show_page_exec_time | Т | Если значение данной переменной — «Y», то внизу страницы будет выводиться время выполнения данной страницы на сервере. Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить этой переменной значение «N». Данная переменная позволяет получить объективную информацию о скорости работы сайта. Пример: |
show_include_exec_time | Т | Если значение данной переменной — «Y», то на странице будет показано время выполнения всех функций CMain::IncludeFile, подключающей как компоненты так и обычные файлы. Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить этой переменной значение «N». Пример: |
show_lang_files | Т | Если значение данной переменной — «Y», то внизу страницы будет выводиться список используемых на данной странице языковых файлов с возможностью поиска по ним. Данная информация будет выводиться в рамках сессии. Для отключения ее вывода — достаточно один раз присвоить этой переменной значение «N». Данная переменная позволяет быстро найти ту или иную языковую фразу. Пример: |
no_keep_statistic_KEY | Т | Если значение данной переменной — «Y», то это позволит отключить сбор статистики в рамках сессии. Для включения сбора статистики — достаточно один раз присвоить этой переменной значение «N». Как правило данную переменную используют для отключения сбора статистики в момент захода на сайт администратора. KEY — лицензионный ключ хранимый в файле /bitrix/license_key.php Пример: |
no_agent_statistic_KEY | Т | Если значение данной переменной — «Y», то это позволит отключить отработку агентов статистики в рамках сессии. Для включения отработки агентов в данной сесси — достаточно один раз присвоить этой переменной значение «N». KEY — лицензионный ключ хранимый в файле /bitrix/license_key.php Пример: |
key | Данную переменную можно использовать только при вызове скрипта /bitrix/admin/phpinfo.php. Если ее значение будет равным лицензионному ключу, то вышеупомянутый скрипт отрабатает без подключения административного пролога. Обозначения типов переменных:
Пользовательские комментарииМы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы. Для этого нужно всего лишь авторизоваться на сайте Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь. Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы. Источник |