- Откуда $arResult берет значении массива?
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками php битрикс или задайте свой вопрос.
- Похожие
- Подписаться на ленту
- Битрикс. Структура простого компонента
- Массивы $arParams и $arResult
- Как вывести переменную из компонента в шаблоне (Битрикс)
- arResult в битрикс, или вывод данных в других компонентах
- 1 ответ 1
- Битрикс. Структура простого компонента
- Массивы $arParams и $arResult
Откуда $arResult берет значении массива?
Хотелось бы узнать, откуда в $arResult берут значении массива в компоненте?
К примеру если смотрим компонент новостей через var_dump или print_r , то в массиве $arResult можно встретить одни ключи и значения, а в компоненте слайдеров другие ключи и значения.
2 ответа 2
Массив $arResult заполняется непосредственно компонентом и может заполняться/модифицироваться файлом result_modifier.php в шаблоне компонента. Разработчик компонента сам определяет, какие ключи и значения заносить в этот массив. Как правило, исходя из того, какие данные по мнению автора компонента нужны будут шаблону компонента для отображения.
У каждого компонента в Bitrix, есть файл component.php или class.php, в данном файле исходя из логики работы компонента формируется массив $arResult, который отправляется в шаблон компонента.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php битрикс или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.2.40635
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
Битрикс. Структура простого компонента
Компонент хранит все, что ему нужно для работы, в своей папке. Поэтому их можно легко переносить между проектами. Файлы компонента нельзя использовать по отдельности. Компонент — это единое целое, он обладает свойством неделимости.
Папка компонента может содержать следующие папки и файлы:
- папка lang , в которой расположены файлы языковых сообщений (переводов) компонента. С версии 11.0 в ней также могут размещаться папка помощи help .
- папка templates , в которой расположены шаблоны вывода (отображения) компонента. Эта подпапка может отсутствовать, если у компонента нет шаблонов вывода.
- файл component.php , который содержит код компонента. Задача этого файла — сформировать из полученных параметров ( $arParams ) массив $arResult , который впоследствии попадет в шаблон компонента. Этот файл должен всегда присутствовать в папке компонента.
- файл .description.php , который содержит название, описание компонента и его положение в дереве логического размещения (для редактора). Этот файл должен всегда присутствовать в папке компонента. Его отсутствие не скажется на работе компонента, но размещение компонента через визуальный редактор станет невозможным.
- файл .parameters.php , который содержит описание входных параметров компонента для редактора. Если у компонента есть входные параметры, то этот файл должен присутствовать в папке компонента.
- файл class.php для поддержки ООП-компонентов.
- файл script.js , который подключается автоматически.
- любые другие папки и файлы с ресурсами, необходимыми компоненту, например, папка images .
Общая структура компонента
Метод поддержки внутреннего кеширования компонента. Возвращает true в случае, если кеш недействителен, или false в противном случае.
Если кеш действителен, метод отправляет на экран его содержимое, заполняет $arResult и возвращает false . Если кеш недействителен, метод возвращает true , кеширование завершается и кеш сохраняется при вызове методов
- CBitrixComponent::IncludeComponentTemplate()
- или
- CBitrixComponent::ShowComponentTemplate()
сразу после подключения шаблона компонента.
- cacheTime — Время кеширования в секундах. Если этот параметр равен false , то время кеширования берется из входного параметра $arParams[‘CACHE_TIME’] . Необязательный.
- additionalCacheID — Кеш зависит от текущего сайта ( SITE_ID ), имени компонента, имени шаблона, входных параметров $arParams . Если кеш должен зависеть от каких-либо дополнительных параметров, то их необходимо передать сюда в виде строки. По умолчанию параметр равен false , т.е. кеш зависит только от текущего сайта SITE_ID , имени компонента, имени шаблона и входных параметров $arParams . Необязательный.
- cachePath — Путь к файлу кеша относительно папки кешей. Необязательный.
Массивы $arParams и $arResult
Массив $arParams — это предопределенная для компонента переменная, представляющая собой массив входных параметров компонента. Ключами в этом массиве являются названия параметров, а значениями — их значения.
Перед подключением компонента ко всем значениям параметров применяется функция htmlspecialcharsEx() . Исходные значения параметров сохраняются в этом же массиве с теми же ключами, но с префиксом
. Например, $arParams[«NAME»] — входной параметр, к которому применена функция htmlspecialcharsEx() , а $arParams[«
NAME»] — исходный входной параметр.
Переменная $arParams является псевдонимом для члена класса компонента, поэтому все изменения этой переменной отражаются и на этом члене класса. В начале кода компонента должна быть произведена проверка входных параметров, инициализация не установленных параметров, приведение к нужному типу. Все эти изменения входных параметров будут доступны и в шаблоне. То есть параметры будут там уже проверенными и максимально безопасными. Дублирование подготовки параметров в шаблоне компонента не требуется.
Массив $arResult — это предопределенная для компонента переменная, в которую собирается результат работы компонента для передачи в шаблон. Перед подключением файла компонента эта переменная инициализируется пустым массивом array() .
Переменная $arResult является псевдонимом для члена класса компонента, поэтому все изменения этой переменной отражаются и на этом члене класса. Значит явно передавать в шаблон эту переменную не нужно, это сделают внутренние механизмы класса компонента.
Источник
Как вывести переменную из компонента в шаблоне (Битрикс)
При разработке сайтов на битриксе иногда возникает необходимость вывести определенную локальную переменную из компонента где-нибудь еще, или же использовать её иным способом. В рамках данного примера, такой переменной является значение города из компонента определения пользовательского местоположения. Существуют несколько путей решения данной задачи. В данной заметке рассматривается путь не самый идеальный, но наиболее простой.
Решение данной задачи возможно через объявление искомой переменной глобальной — т.е. видимой и за пределами исходного компонента.
Для внесения ясности можно привести следующий пример из реальной практики автора данной заметки: Требуется получить значение города из компонента «Определитель города» и, на основании полученных данных, вывести тот, или иной баннер.
Шаг 1. Код компонента
Первым делом, мы идем в код шаблона компонента и ищем там искомую переменную/массив данных. Шаблон компонента, как известно, может быть расположен либо в папке с шаблоном сайта, либо в папке /bitrix/components/.
В нашем случае, это часть массива $arResult: $arResult[«USER_CHOICE»]; Если мы попробуем вывести этот массив за пределами компонента, например, в футере (через print_r()), то получим пустое значение.
Переопределяем: $GLOBALS[‘sonicYouth’] = $arResult[«USER_CHOICE»];
Шаг 2. Вывод содержимого массива
Вызываем в футере содержимое нашего массива через print_r:
Источник
arResult в битрикс, или вывод данных в других компонентах
дамы и господа, суть моей проблемы такова: 1)в карточке товара есть блок видео о товаре, видео выводится из ‘$arResult[«PROPERTIES»][«PRODUCT_VIDEO_ID»][«VALUE»]’ (в нем хранится ссылка на видео) все это действо происходит в шаблоне компонента bitrix:catalog.element, передо мной встала задача поместить маленькую иконку о наличии видео у товара, как бы я не выворачивался на изнанку переменная не хочет выбираться в другой компонент, а именно в custom:mc.catalog.section. перепробовал все(!) варианты которые были в моей голове, гуглил, шаманил, молился богам, стучал в бубен, нервно хватался за волосы, но вывести переменную у меня не получилось из одного компонента в другой. по логике, есть и другие варианты, например в шаблоне компонента bitrix:catalog.element заставить писать эту переменную, например, в одну строку с ID товара, а затем в компоненте custom:mc.catalog.section читать этот файл, и если он видит, что у компонента с таким-то ID есть еще и видео, то вывести иконку. это для моего пытливого разума слишком сложно(сказались тонны бессонных ночей. )
Прошу прощения, что не предоставил код, приходится обьяснять «на пальцах», всю нужную информацию я могу предоставить, очень прошу помочь. ))
1 ответ 1
Битрикс это сложный инструмент и его стоит прежде изучить. в вашем случае используется самодельный компонент custom:mc.catalog.section как он устроен и что умеет ни кто здесь не знает. По этому ответ из расчета на штатный bitrix:catalog.section Если прочитать документацию, то можно заметить несколько параметров PROPERTY_CODE, PROPERTY_CODE_MOBILE, OFFERS_PROPERTY_CODE. Т.е. если вы в дин из этих массивов добавите PRODUCT_VIDEO_ID, то получите в шаблоне этого компонента искомое. Для варианта PROPERTY_CODE ищите следующим образом: Наверняка у вас в шаблоне есть подобная конструкция
Так вот и ищите искомое в $arItem. (вероятно $arItem[«DISPLAY_PROPERTIES»][‘PRODUCT_VIDEO_ID’])
Источник
Битрикс. Структура простого компонента
Компонент хранит все, что ему нужно для работы, в своей папке. Поэтому их можно легко переносить между проектами. Файлы компонента нельзя использовать по отдельности. Компонент — это единое целое, он обладает свойством неделимости.
Папка компонента может содержать следующие папки и файлы:
- папка lang , в которой расположены файлы языковых сообщений (переводов) компонента. С версии 11.0 в ней также могут размещаться папка помощи help .
- папка templates , в которой расположены шаблоны вывода (отображения) компонента. Эта подпапка может отсутствовать, если у компонента нет шаблонов вывода.
- файл component.php , который содержит код компонента. Задача этого файла — сформировать из полученных параметров ( $arParams ) массив $arResult , который впоследствии попадет в шаблон компонента. Этот файл должен всегда присутствовать в папке компонента.
- файл .description.php , который содержит название, описание компонента и его положение в дереве логического размещения (для редактора). Этот файл должен всегда присутствовать в папке компонента. Его отсутствие не скажется на работе компонента, но размещение компонента через визуальный редактор станет невозможным.
- файл .parameters.php , который содержит описание входных параметров компонента для редактора. Если у компонента есть входные параметры, то этот файл должен присутствовать в папке компонента.
- файл class.php для поддержки ООП-компонентов.
- файл script.js , который подключается автоматически.
- любые другие папки и файлы с ресурсами, необходимыми компоненту, например, папка images .
Общая структура компонента
Метод поддержки внутреннего кеширования компонента. Возвращает true в случае, если кеш недействителен, или false в противном случае.
Если кеш действителен, метод отправляет на экран его содержимое, заполняет $arResult и возвращает false . Если кеш недействителен, метод возвращает true , кеширование завершается и кеш сохраняется при вызове методов
- CBitrixComponent::IncludeComponentTemplate()
- или
- CBitrixComponent::ShowComponentTemplate()
сразу после подключения шаблона компонента.
- cacheTime — Время кеширования в секундах. Если этот параметр равен false , то время кеширования берется из входного параметра $arParams[‘CACHE_TIME’] . Необязательный.
- additionalCacheID — Кеш зависит от текущего сайта ( SITE_ID ), имени компонента, имени шаблона, входных параметров $arParams . Если кеш должен зависеть от каких-либо дополнительных параметров, то их необходимо передать сюда в виде строки. По умолчанию параметр равен false , т.е. кеш зависит только от текущего сайта SITE_ID , имени компонента, имени шаблона и входных параметров $arParams . Необязательный.
- cachePath — Путь к файлу кеша относительно папки кешей. Необязательный.
Массивы $arParams и $arResult
Массив $arParams — это предопределенная для компонента переменная, представляющая собой массив входных параметров компонента. Ключами в этом массиве являются названия параметров, а значениями — их значения.
Перед подключением компонента ко всем значениям параметров применяется функция htmlspecialcharsEx() . Исходные значения параметров сохраняются в этом же массиве с теми же ключами, но с префиксом
. Например, $arParams[«NAME»] — входной параметр, к которому применена функция htmlspecialcharsEx() , а $arParams[«
NAME»] — исходный входной параметр.
Переменная $arParams является псевдонимом для члена класса компонента, поэтому все изменения этой переменной отражаются и на этом члене класса. В начале кода компонента должна быть произведена проверка входных параметров, инициализация не установленных параметров, приведение к нужному типу. Все эти изменения входных параметров будут доступны и в шаблоне. То есть параметры будут там уже проверенными и максимально безопасными. Дублирование подготовки параметров в шаблоне компонента не требуется.
Массив $arResult — это предопределенная для компонента переменная, в которую собирается результат работы компонента для передачи в шаблон. Перед подключением файла компонента эта переменная инициализируется пустым массивом array() .
Переменная $arResult является псевдонимом для члена класса компонента, поэтому все изменения этой переменной отражаются и на этом члене класса. Значит явно передавать в шаблон эту переменную не нужно, это сделают внутренние механизмы класса компонента.
Источник