InitComponentVariables
Описание и параметры
void InitComponentVariables( string componentPage , array arComponentVariables , array arVariableAliases , array & arVariables );
Метод служит для поддержки псевдонимов переменных в комплексных компонентах (как в ЧПУ режиме, так и в обычном). Метод восстанавливает истинные переменные из $_REQUEST на основании их псевдонимов. Статический метод.
Параметры
Параметр | Описание |
---|---|
componentPage | Для ЧПУ режима: код шаблона пути, который был получен методом CComponentEngine::ParseComponentPath. Если компонент работает не в ЧПУ режиме, этот параметр должен быть равен False. |
arComponentVariables | Массив имен переменных, которые компонент может получать из запроса. Этот параметр имеет вид array("имя переменной 1", "имя переменной 2", ...). |
arVariableAliases | Массив псевдонимов переменных. Для режима ЧПУ имеет формат: array( "код шаблона пути 1" => array( "название переменной 11" => "псевдоним переменной 11", "название переменной 12" => "псевдоним переменной 12", * * * ), "код шаблона пути 2" => array( "название переменной 21" => "псевдоним переменной 21", "название переменной 22" => "псевдоним переменной 22", * * * ), * * * )Для не ЧПУ режима: array( "название переменной" => "псевдоним переменной", * * * ) |
arVariables | Переменная, в которой возвращаются восстановленные переменные. |
Смотрите также
Пример
// Для ЧПУ режима // В этой переменной будем накапливать значения истинных переменных $arVariables = array(); // Соберем массив шаблонов путей из массива шаблонов путей // "по-умолчанию" $arDefaultUrlTemplates404 // и массива, переданного во входных параметрах $arParams["SEF_URL_TEMPLATES"] $arUrlTemplates = CComponentEngine::MakeComponentUrlTemplates($arDefaultUrlTemplates404, $arParams["SEF_URL_TEMPLATES"]); // Соберем массив псевдонимов переменных из массива псевдонимов // "по-умолчанию" $arDefaultVariableAliases404 // и массива, переданного во входных параметрах $arParams["VARIABLE_ALIASES"] $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases404, $arParams["VARIABLE_ALIASES"]); // Определим код шаблона, которому соответствует текущая запрошенная страница $componentPage = CComponentEngine::ParseComponentPath( $arParams["SEF_FOLDER"], $arUrlTemplates, $arVariables ); // Если запрошенная страница не соответствует ни одному шаблону, // то установим явно что показывать if (StrLen($componentPage) <= 0) $componentPage = "list"; // Теперь у нас установлен код шаблона пути и переменные, // которые пришли в виде пути к запрошенной // странице, записаны в $arVariables // Восстановим переменные, которые пришли в параметрах запроса // и допишем их в $arVariables CComponentEngine::InitComponentVariables($componentPage, $arComponentVariables, $arVariableAliases, $arVariables); // Теперь на основании кода шаблона пути $componentPage // и истинных переменных $arVariables // можно определить, какую страницу шаблона компонента нужно показать if ($componentPage == "element") $componentPage = "element"; elseif ($componentPage == "section1" || $componentPage == "section2") $componentPage = "section"; else $componentPage = "list"; $arResult = [ 'FOLDER' => $SEF_FOLDER, 'URL_TEMPLATES' => $arUrlTemplates, 'VARIABLES' => $arVariables, 'ALIASES' => $arVariableAliases, ]; $this->IncludeComponentTemplate($componentPage); );
// Для не ЧПУ режима // В этой переменной будем накапливать значения истинных переменных $arVariables = array(); // Соберем массив псевдонимов переменных из массива псевдонимов // "по-умолчанию" $arDefaultVariableAliases // и массива, переданного во входных параметрах $arParams["VARIABLE_ALIASES"] $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases, $arParams["VARIABLE_ALIASES"]); // Восстановим переменные, которые пришли в параметрах запроса // и допишем их в $arVariables CComponentEngine::InitComponentVariables(False, $arComponentVariables, $arVariableAliases, $arVariables); // Теперь на основании истинных переменных $arVariables // можно определить, какую страницу шаблона компонента нужно показать $componentPage = ""; if (IntVal($arVariables["ELEMENT_ID"]) > 0) $componentPage = "element"; elseif (IntVal($arVariables["IBLOCK_ID"]) > 0 || IntVal($arVariables["SECTION"]) > 0) $componentPage = "section"; else $componentPage = "list"; $this->IncludeComponentTemplate( array( "VARIABLES" => $arVariables, "ALIASES" => $arVariableAliases ), $componentPage );
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.