357  /  382
Справочник

Переопределение входящих переменных

Просмотров: 35938
Дата последнего изменения: 16.11.2023
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

Каждый компонент имеет набор переменных, в которых он принимает извне коды или другие атрибуты запрашиваемых данных. Например, компонент bitrix:catalog.section имеет переменные IBLOCK_ID и SECTION_ID, в которых он принимает и обрабатывает коды каталога и группы товаров соответственно.

Все компоненты, которые входят в состав комплексного компонента, должны иметь единообразный набор переменных. Например, комплексный компонент bitrix:catalog и все обычные компоненты (bitrix:catalog.section.list, bitrix:catalog.section и т.д.), которыми он управляет, работают с переменными IBLOCK_ID, SECTION_ID, ELEMENT_ID и другими.

Если разработчик при размещении комплексного компонента на странице хочет переопределить переменные компонента, то он среди входящих параметров компонента должен задать параметр VARIABLE_ALIASES.

При подключении компонента в режиме SEF (ЧПУ) этот параметр должен иметь вид:

"VARIABLE_ALIASES" => array( 
	"list" => array(),
	"section" => array(
		"IBLOCK_ID" => "BID",
		"SECTION_ID" => "ID"
		),
	"element" => array(
	"SECTION_ID" => "SID",
	"ELEMENT_ID" => "ID"
	),
)

Здесь коды массива соответствуют кодам в массиве шаблонов путей. Для каждого пути могут быть заданы свои переопределения переменных.

При подключении компонента не в режиме SEF (ЧПУ) этот параметр должен имет вид:

"VARIABLE_ALIASES" => array(
	"IBLOCK_ID" => "BID",
	"SECTION_ID" => "GID",
	"ELEMENT_ID" => "ID",
)

Пример №1:

Пусть требуется, чтобы компонент bitrix:catalog, лежащий в файле /fld/cat.php, работал с путями:
/catalog/index.php – для списка каталогов,
/catalog/section/код_группы.php?ID=код_каталога – для группы товаров,
/catalog/element/код_товара.php?ID=код_группы – для детальной информации о товаре.

Во входящих параметрах подключения компонента должны быть установлены следующие параметры:

"SEF_MODE" => "Y",    
"SEF_FOLDER" => "/catalog/",
"SEF_URL_TEMPLATES" => array(
	"list" => "index.php",
	"section" => "section/#SECTION_ID#.php?ID=#IBLOCK_ID#",
	"element" => "element/#ELEMENT_ID#.php?ID=#SECTION_ID#"    
                            ),
"VARIABLE_ALIASES" => array(
	"list" => array(),
	"section" => array(
		"IBLOCK_ID" => "ID"),
			"element" => array(
				"SECTION_ID" => "ID",),    

Пример №2:

Пусть требуется, чтобы компонент bitrix:catalog, лежащий в файле /fld/cat.php, работал с путями
/fld/cat.php – для списка каталогов,
/fld/cat.php?BID=код_каталога&SID=код_группы – для группы товаров,
/fld/cat.php?ID=код_товара&SID=код_группы – для детальной информации о товаре.

Во входящих параметрах подключения компонента должны быть установлены следующие параметры:

"SEF_MODE" => "N",
"VARIABLE_ALIASES" => array(
	"IBLOCK_ID" => "BID",
	"SECTION_ID" => "SID",
	"ELEMENT_ID" => "ID",
	),

21
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии