Перейти к содержанию

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

Каждый компонент имеет набор переменных, в которых он принимает извне коды или другие атрибуты запрашиваемых данных. Например, компонент 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",
    ),