Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Почему из menu_ext нельзя вызвать $APPLICATION->IncludeFile()?

00 голосов
2
Проблема в следующем: в нескольких каталогах размещены динамически собираемые меню menu_ext. Механизм их формирования из инфоблоков для всех каталогов одинаковый, поэтому возникла идея вынести код, формирующий эти меню в отдельный файл (условно назовем его menu_include), а в файлах menu_ext оставить только инициализацию основных констант и подключение menu_include.
Пример (popup.menu_ext.php):
Код
<?php
if (CModule::IncludeModule("iblock")):
   $IBLOCK_TYPE = "catalog";
   $IBLOCK_CODE = "tuning";
   $CACHE_TIME = 3600;
   $APPLICATION->IncludeFile("popup.menu_include.php");
endif;
?>

Но, судя по всему, в menu_ext почему то недоступен объект $APPLICATION.
Кроме того, использование просто include() с указанием полного пути к menu_include тоже ничего не дает, файл как будто не находится.

Вобщем, можно конечно всё оставить как есть, то есть в каждый menu_ext засовывать одинаковый код формирования пунктов меню, но как-то это неправильно на мой взгляд. Какие же могут быть варианты решения этой проблемы?
спросил 29 Июль, 13 от thing (200 баллов)

2 Ответы

00 голосов
Должен быть доступен. Возможно, путь к файлу нужно указать полностью. Например, $_SERVER['DOCUMENT_ROOT'] . "/bitrix/templates/шаблон/popup.menu_include.php". Или же через GetFileRecursive();

Если действительно по каким-то причинам недоступен объект $APPLICATION, то его можно объявить как глобальный в этом месте:
global $APPLICATION;
- тогда точно будет доступен.
ответил 29 Июль, 13 от Hakuoro (220 баллов)
00 голосов
Спасибо за помощь!
Проблема решилась объявлением $APPLICATION как global.

P.S. Правда в результате пришлось разруливать ещё проблемы с областью видимости некоторых переменных, но всё завершилось благополучно smile:)
ответил 26 Сен, 13 от thing (200 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
4 ответов
спросил 22 Янв, 14 от Kania (5,180 баллов)
0 голосов
0 ответов