Всем доброго времени суток!
На сайте есть меню: .left.menu и .left_podmenu, родитель и дите соответственно.
Есть самописный агент (не относящийся ни к одному из модулей), в котором потребовалось получать ссылки на разделы, зная значение дополнительной переменной указанной в .left_podmenu.
Для этого в Агенте использую след код:
С тех пор агент не отрабатывается и периодически начала вылетать ошибка:
Fatal error: Call to a member function GetMenu() on a non-object in .../bitrix/php_interface/init.php on line 169, которая после пары нажатий на F5 исчезает и сайт нормально прогружается.
Подумалось мне, что это из-за отсутствия инициализации объект класса CMenu. Добавила перед каждым GetMenu соответствующие строчки:
После этого с прежней периодичностью начала вылетать следующая ошибка:
Fatal error: Using $this when not in object context in .../bitrix/modules/main/classes/general/menu.php on line 48
Код файла menu.php, по вышеуказанному адресу:
На сайте есть меню: .left.menu и .left_podmenu, родитель и дите соответственно.
Есть самописный агент (не относящийся ни к одному из модулей), в котором потребовалось получать ссылки на разделы, зная значение дополнительной переменной указанной в .left_podmenu.
Для этого в Агенте использую след код:
Код |
---|
$obMenu = $APPLICATION->GetMenu( //вот это строчка №169 "left", false, false, "/shop/catalog/" ); for ($i=1, $mainmenu = array(); $mainmenu[$obMenu -> arMenu[$i][3][codevidatov]][url] = $obMenu -> arMenu[$i][1]; $i++): $obMenu_child = $APPLICATION->GetMenu( "left_podmenu", false, false, $mainmenu[$obMenu -> arMenu[$i][3][codevidatov]][url] ); for ($j=1; $mainmenu[$obMenu -> arMenu[$i][3][codevidatov]][$obMenu_child -> arMenu[$j][3][codevidatov]] = $obMenu_child -> arMenu[$j][1]; $j++); endfor; |
С тех пор агент не отрабатывается и периодически начала вылетать ошибка:
Fatal error: Call to a member function GetMenu() on a non-object in .../bitrix/php_interface/init.php on line 169, которая после пары нажатий на F5 исчезает и сайт нормально прогружается.
Подумалось мне, что это из-за отсутствия инициализации объект класса CMenu. Добавила перед каждым GetMenu соответствующие строчки:
Код |
---|
if (CMenu::Init("left", false, false))... if (CMenu::Init("left_podmenu", false, false))... |
После этого с прежней периодичностью начала вылетать следующая ошибка:
Fatal error: Using $this when not in object context in .../bitrix/modules/main/classes/general/menu.php on line 48
Код файла menu.php, по вышеуказанному адресу:
Код |
---|
while(strlen($Dir)>0) { $Dir = rtrim($Dir, "/"); $menu_file_name=$_SERVER["DOCUMENT_ROOT"].$Dir."/.".$this->type.".menu.php"; //вот это строчка №48 if(file_exists($menu_file_name)) { include($menu_file_name); $this->MenuDir = $Dir."/"; $this->arMenu = $aMenuLinks; $this->template = $sMenuTemplate; $bFounded = true; break; } $pos = strrpos($Dir, "/"); if($pos===false || $onlyCurrentDir == true) break; $Dir = substr($Dir, 0, $pos+1); } |