Редактор меню стирает условия после обновления main 26.1000.0

11.11.2026

Переименовали пункт меню, нажали «Применить», и на сайте появились ссылки, которые раньше были скрыты условием. На стенде «Управление сайтом» с main 26.1000.0 и fileman 26.0.0 это воспроизводится в расширенном редакторе меню.

Для проверки я создал два пункта: «Каталог» без условия и «Партнёрам» с условием «Для папки или файла» /partners/. За пределами этой папки компонент bitrix:menu показывал только каталог. В админке открыл «Контент → Структура сайта → Файлы и папки», перешёл в папку тестового раздела и открыл его меню в расширенном режиме.

До сохранения у пункта «Партнёрам» задано условие по папке /partners/

Изменил название первого пункта на «Каталог товаров» и нажал «Применить». Настройки «Партнёрам» не трогал. После сохранения у него стало «[без условия]», в PHP-файле пятый элемент пункта превратился в пустую строку, а на тестовой странице появилась ссылка «Партнёрам».

После изменения названия соседнего пункта условие «Партнёрам» исчезло

Причина в несовместимости двух модулей. В main/include/condition.php функция ConditionCompose() теперь ждёт вторым аргументом тип условия: folder, ugroups, php и другие. В fileman/admin/fileman_menu_edit.php остался вызов с номером пункта: ConditionCompose(${"condition_$num"}, $num). Номер не совпадает с типом, функция возвращает null, а CFileMan::SaveMenu() записывает пустое условие. Расширенная форма пересобирает пункты целиком, поэтому страдают и те, которые редактор не менял.

Пока эта связка версий стоит на сайте, для изменения названий и ссылок я бы выбирал «Упрощенный режим». Проверил тот же сценарий после восстановления файла: название изменилось, условие осталось, лишняя ссылка не появилась. Упрощённая форма берёт существующий массив меню и сохраняет его условия.

Для изменения самого условия нажмите «Редактировать как файл» в верхней панели редактора меню. Откроется PHP-редактор файла .top.menu.php или файла другого типа меню. Сначала сохраните его копию. Условие находится в пятом элементе пункта; например:

        <?php
declare(strict_types=1);

// Условие показа — пятый элемент пункта меню.
$aMenuLinks = [
    ['Каталог товаров', '/catalog/', [], [], ''],
    ['Партнёрам', '/partners/', [], [], "CSite::InDir('/partners/')"],
];

    

Этот файл я сохранил через PHP-редактор админки: условие восстановилось, и bitrix:menu снова скрыл «Партнёрам» вне /partners/. После такой правки не пересохраняйте меню в расширенной форме.

⚠️ Важно
Условие меню управляет видимостью ссылки. Права на страницу проверяются отдельно; закрытый раздел должен иметь собственное ограничение доступа.

Если меню уже сохранили с потерей условий, восстановите их из копии файла, Git или резервной копии. Простое переключение режима стёртые выражения не вернёт. Перед повторной проверкой расширенной формы на своём сайте сделайте копию меню: проверка тоже меняет файл.

Опубликовано 9 часов назад

Не сходится?

Спросите Домового: он знает документацию и материалы сайта по этой теме. Ответит сразу.

Кирилл Новожилов

Нужен живой разбор?

Консультация автора BXMax: созвон один на один, 90 минут на вашу задачу по теме «Редактор меню стирает условия после обновления main 26.1000.0».

Выбрать время Ближайшее: 12 ноября, четверг, 20:00–21:30 по Москве

Комментарии (0)

Пожалуйста, войдите в аккаунт, чтобы оставить комментарий

Оставить комментарий
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…

Можно закрыть чат и перейти на другую страницу. Когда ответ будет готов, на кнопке Домового появится отметка.

Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти