- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/subtype/menu.php
- Класс: BitrixLandingSubtypeMenu
- Вызов: Menu::redrawStructureMenu
static function redrawStructureMenu(BitrixLandingBlock $block): void
{
$manifest = $block->getManifest();
return;
if (empty($manifest['menu']))
{
return;
}
// collect all pages top level
$menu = [];
$inFolders = [];
$res = Landing::getList([
'select' => [
'ID', 'TITLE', 'FOLDER_ID'
],
'filter' => [
'SITE_ID' => $block->getSiteId(),
'==AREAS.ID' => null
]
]);
while ($row = $res->fetch())
{
if ($row['FOLDER_ID'])
{
$inFolders[] = $row;
continue;
}
$menu[$row['ID']] = [
'text' => $row['TITLE'],
'href' => '#landing' . $row['ID'],
'target' => '_self',
'children' => []
];
}
// collect pages on folder
if ($inFolders)
{
foreach ($inFolders as $row)
{
if (isset($menu[$row['FOLDER_ID']]))
{
$menu[$row['FOLDER_ID']]['children'][] = [
'text' => $row['TITLE'],
'href' => '#landing' . $row['ID'],
'target' => '_self',
'children' => []
];
}
}
}
// save new menu
foreach ($manifest['menu'] as $selector => $foo)
{
$block->updateNodes([
$selector => [
array_values($menu)
]
]);
}
$block->save();
}