Получение сносного по формату - вложенного, - массива с данными на меню. Плюс кэширующее прокси.
INTERNAL
Рефактор конторского легаси (избавление от статики и т.д).
composer require proklung/bitrix-menu-builder-bundle
- Сервис
bitrix_menu_bundle.manager
(он жеProkl\BitrixMenuBuilderBundle\Services\MenuManager
) - Кэширующее прокси -
bitrix_menu_bundle.manager_cached
(он жеProkl\BitrixMenuBuilderBundle\Services\MenuManagerCached
) - Фасад -
Prokl\BitrixMenuBuilderBundle\Services\MenuManagerCachedFacade
. Если подключен соответствующий бандл. - Фасад -
Prokl\BitrixMenuBuilderBundle\Services\MenuManagerFacade
Время жизни кэша и директория управляются в конфигурации бандла (/local/config/packages/bitrix-menu-builder.yaml
) ключами
ttl_cache
и cache_dir
(относительно папки bitrix
).
По умолчанию значения 9600 и /cache/bitrix_models_bundle
.
/**
* Возвращает рекурсивный массив пунктов меню.
*
* @param string $dir Директория, с которой начинать рекурсию.
* @param string $menuType Тип меню.
* @param boolean $bDisableRootLink Заменить ссылки корневого меню на
* ссылку из первого дочернего элемента.
* @param boolean $bUseExt Подключать файлы расширений.
* @param integer $maxLevel Количество уровней для сканирования.
* @param boolean $bCheckSelected Отмечать выбранные пункты.
*
* @return array
* @throws Exception Error.
*/
public function getTreeMenuByDir(
string $dir = '/',
string $menuType = 'top',
bool $bDisableRootLink = true,
bool $bUseExt = true,
int $maxLevel = 4,
bool $bCheckSelected = true
): array {}
/**
* Получает один уровень меню из пути.
*
* @param string $dir Директория, с которой начинать рекурсию.
* @param integer $level Уровень, который необходимо получить.
* @param string $menuType Тип меню.
* @param boolean $bUseExt Подключать файлы расширений.
*
* @return array
*/
public function getOneLevelMenu(
string $dir = '/',
int $level = 1,
string $menuType = 'top',
bool $bUseExt = true
) { }