Anumik
@Anumik

Как заменять меню от выбранного города?

Доброго времени суток
Сайт на битрикс, есть основной сайт и его копии в поддиректориях соответствующих разным городам, при выборе города записывается кука, в файле .left.menu_ext.php собирается часть меню следующим кодом:
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global $APPLICATION;

    if(CModule::IncludeModule("iblock"))
        {
    if ($_COOKIE['userCity']=='irkutsk') {
      $IBLOCK_ID = 25;
    } elseif ($_COOKIE['userCity']=='rostov') {
      $IBLOCK_ID = 49;
    } elseif ($_COOKIE['userCity']=='khabarovsk') {
      $IBLOCK_ID = 48;
    } elseif ($_COOKIE['userCity']=='rostov') {
      $IBLOCK_ID = 31;
    } else {
      $IBLOCK_ID = 5;
    }
       // указываем из какого инфоблока берем элементы
$arOrder = Array("SORT"=>"ASC");    // сортируем по свойству SORT по возрастанию
$arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement())
    {
    $arFields = $ob->GetFields();            // берем поля
// начинаем наполнять массив aMenuLinksExt нужными данными
    $aMenuLinksExt[] = Array(
                $arFields['NAME'],
                $arFields['DETAIL_PAGE_URL'],
                Array(),
                Array(),
                ""
                );
    }        //     while($ob = $res->GetNextElement())
}    //     if(CModule::IncludeModule("iblock"))
 $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);
// $aMenuLinks = array_merge($aMenuLinks);
?>

но вот эта конструкция :
if ($_COOKIE['userCity']=='irkutsk') {
      $IBLOCK_ID = 25;
    } elseif ($_COOKIE['userCity']=='rostov') {
      $IBLOCK_ID = 49;
    } elseif ($_COOKIE['userCity']=='khabarovsk') {
      $IBLOCK_ID = 48;
    } elseif ($_COOKIE['userCity']=='rostov') {
      $IBLOCK_ID = 31;
    } else {
      $IBLOCK_ID = 5;
    }

не отрабатывает, записываю куку, а выводит все равно элементы из основного ИБ (адреса не заменяются)
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 3
alexyarik
@alexyarik
Битрикс разработчик
Привязки к сайту нет (SITE_ID), мне кажется причина в этом
Ответ написан
В $_COOKIE['userCity'] точно то, что вы ожидаете? Кеш у компонента меню отключен?
Ответ написан
sabramovskikh
@sabramovskikh
Для работы с куками в битриксе необходимо использовать методы
https://dev.1c-bitrix.ru/api_help/main/reference/c...
https://dev.1c-bitrix.ru/api_help/main/reference/c...

Посмотрите точно ли кука имеет имя "userCity"?

P.S. Используйте вместо многа if else - switch
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы