S-WEBS24

Битрикс24

CRM, процессы и приложения для вашей компании

Вернуться к списку Вернуться к статьям
Статьи

Меню редактируется в CMS, а ссылки видны в HTML: как совместить два требования

Редактируемое меню и ссылки в исходном HTML совместимы: CMS хранит структуру пунктов, сервер выводит обычные ссылки, а браузер добавляет раскрытие и мобильное поведение. Важно разделить переход по адресу и действие открытия подменю. Ссылка не должна существовать только как обработчик JavaScript, если от неё требуется обычная навигация.

Редактируемое меню сайта
Учебная схема: редактируемое меню сайта. Обозначения и примеры не относятся к конкретному клиенту.

Учебная задача касается новой шапки сайта. Редактор управляет названиями, адресами и вложенностью из административного интерфейса. Посетитель видит рабочее меню, а исходный HTML содержит те же осмысленные переходы. Это не требует давать редактору право писать произвольный код шаблона.

Модель меню начинается с понятных полей

Для пункта нужны подпись, адрес, порядок и при необходимости родитель. Дополнительные поля добавляют по реальному сценарию: видимость, язык, открытие внешней ссылки или отдельное описание. Не превращайте меню в универсальный конструктор без ограничений, если редактору нужны только обычные разделы и вложенные ссылки.

Порядок должен быть устойчивым и предсказуемым. Если два пункта имеют одинаковый приоритет сортировки, задайте дополнительное правило, чтобы они не менялись местами между запросами. При перетаскивании в интерфейсе должно быть понятно, меняется ли только порядок или ещё и вложенность. Эти действия имеют разные последствия для навигации.

Отдельно решите, что означает пустой адрес. Это может быть заголовок группы с кнопкой раскрытия, но не должна получаться ссылка на текущую страницу без полезного действия. Для каждого типа пункта определяют допустимые поля и вывод. Редактор не должен угадывать скрытое поведение по случайной пустой строке.

Адрес и подпись требуют проверки

Внутренняя ссылка должна вести на существующий разрешённый раздел. Внешний адрес проверяют по допустимому протоколу и роли пункта. Произвольное значение из административного поля нельзя вставлять в атрибут без безопасного формирования HTML. Права редактора контента не означают разрешение выполнять скрипты через адрес меню.

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

Проверьте удалённую страницу и временно скрытый раздел. Меню должно иметь процедуру сопровождения битых ссылок. Автоматическое превращение любой ошибки в переход на главную скрывает проблему от редактора и не помогает человеку попасть в нужное место.

Серверный HTML и интерактивность решают разные задачи

Сервер может вывести ссылки и вложенные списки сразу. После загрузки JavaScript управляет раскрытием, фокусом и мобильной панелью. Если скрипт задержался или не загрузился, основной путь навигации должен оставаться понятным в пределах выбранного дизайна. Это проверяется реальным исходным ответом, а не только DOM после работы браузера.

Google описывает обнаружение URL через элементы a с атрибутом href. Это не означает гарантированную индексацию каждого адреса, но даёт конкретный ориентир для технической реализации ссылок. Элемент div с обработчиком клика и текстом раздела не становится равнозначной ссылкой только потому, что визуально выглядит так же.

Если используется фреймворк с клиентской навигацией, итоговый HTML всё равно должен содержать корректный адрес. Компонентная абстракция допустима, когда она выводит нужную семантику. Проверять нужно результат рендера установленной версии, а не обещание библиотеки или название компонента.

Переход и раскрытие не должны конфликтовать

У пункта верхнего уровня может быть собственная страница и вложенные разделы. Тогда определите отдельные действия: ссылка открывает страницу, кнопка раскрывает группу. Если одно нажатие пытается сделать оба действия, поведение становится непредсказуемым на телефоне и с клавиатуры.

Кнопка раскрытия должна иметь доступное имя и сообщать состояние. Нельзя полагаться только на направление маленькой стрелки. При закрытии группы фокус не должен оставаться внутри скрытого содержимого. Эти условия полезны всем пользователям, особенно при длинном меню с несколькими уровнями.

На настольном экране наведение может помогать открытию, но не должно быть единственным способом. Клавиатурный пользователь и посетитель сенсорного устройства должны иметь равноправный путь. При этом не нужно автоматически копировать сложную семантику меню приложения для обычного списка ссылок сайта; выбирают подходящую модель навигации.

Как сохранить согласованность после редактирования

После сохранения меню серверный вывод и интерактивный компонент должны читать одну версию структуры. Если один слой использует новый набор, а второй старый кэш, кнопки раскрытия могут перестать соответствовать спискам. Временная несогласованность особенно заметна после добавления или удаления родителя.

Кэш обновляют по фактическим зависимостям меню. Язык, права и раздел сайта могут влиять на набор пунктов. Если меню отличается для вошедшего пользователя, нельзя случайно выдавать его из общего кэша всем посетителям. Эти варианты проверяют только в пределах реально существующих требований.

Для редактора полезен предпросмотр итоговой структуры. Он показывает длинные подписи, пустые группы и неправильную вложенность до публикации изменения. Если предпросмотра нет, инструкция должна объяснять, как безопасно проверить результат на учебной или разрешённой копии.

Изменение редактораОжидаемый результатГде проверить
Новая ссылкаПоявляется с правильным адресомИсходный HTML и обычный переход
Перемещение пунктаСохраняется согласованная вложенностьНастольное и мобильное меню
Удаление родителяДочерние пункты обработаны по правилуРедактор и итоговый список
Скрытие пунктаОн исчезает во всех представленияхКэш, язык и роль пользователя

Мобильное меню проверяют как самостоятельный сценарий

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

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

При увеличении текста подписи могут занимать несколько строк. Кликабельная область должна сохраняться, а стрелка раскрытия не должна перекрывать название. Не уменьшайте шрифт до нечитаемого размера ради сохранения одной строки. Ограничения макета проверяют на реальных длинных учебных названиях.

Как проверить исходный HTML

Получите начальный ответ страницы и найдите нужный адрес в навигационном блоке. Затем отключите JavaScript в разрешённом тестовом сценарии либо изучите исходный документ без последующего выполнения. Наличие ссылки только в DOM после взаимодействия не подтверждает исходное требование.

Сравните адрес в HTML с фактическим переходом. Скрипт может перехватывать нажатие и отправлять человека в другое место. В корректной реализации семантический href остаётся осмысленным, а клиентская обработка улучшает переход, не подменяя его скрытым несогласованным действием.

Проверьте вложенные ссылки, внешние адреса и варианты с якорем. Для внешнего нового окна при необходимости применяют соответствующие атрибуты по политике проекта. Не стоит открывать все пункты в новой вкладке автоматически: это отдельное пользовательское решение, а не SEO-требование.

Ошибки, которые легко пропустить

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

Ещё одна проблема возникает при разной структуре настольной и мобильной версий. Если они формируются из отдельных ручных массивов, редактор обновит только одну. Предпочтительно использовать общую модель данных и разные представления, сохраняя единое назначение пунктов. Конкретный способ выбирают в существующей архитектуре.

Не скрывайте рабочие заметки и внутренние коды в публичных data-атрибутах без необходимости. Требование ссылок в исходном HTML касается навигации, а не раскрытия всей административной структуры. Публичный документ должен содержать только нужные для работы и понимания данные.

Приёмка управления без разработчика

Под учебной ролью редактора добавьте пункт, поменяйте адрес, переставьте его и создайте вложенную группу. После каждого законченного изменения проверьте итоговый пользовательский путь. Администратор с полными правами может не заметить ограничения, которые помешают обычному владельцу контента.

Затем проверьте клавиатуру, телефон и исходный HTML по готовому связанному набору. Это подтверждает три разных требования: редактирование, доступное взаимодействие и корректную семантику ссылок. Одного скриншота красивой шапки недостаточно для всех трёх.

В инструкции оставьте допустимые типы пунктов, правило вложенности и порядок проверки после изменения. Результат должен позволять редактору управлять меню самостоятельно, сохраняя понятную навигацию и реальные адреса в серверном документе.

Учебная приёмка трёх уровней меню

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

Откройте страницу прямым запросом и найдите оба адреса в исходном HTML. После загрузки проверьте переход и раскрытие отдельно. При нажатии на кнопку группы не должен неожиданно выполняться переход, а обычная ссылка должна сохранять возможность открыть адрес предусмотренными средствами браузера.

На клавиатуре пройдите по ссылкам и кнопкам в видимой последовательности. Закройте группу и убедитесь, что фокус не остался в скрытом дочернем элементе. Если дизайн использует иной паттерн управления, ожидаемый порядок должен быть описан и проверен, а не выведен из случайного поведения браузера.

Пустые и ошибочные редакционные состояния

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

Измените подпись на длинную учебную строку. На узком экране она должна переноситься без перекрытия соседнего действия. Если существует ограничение длины, редактор должен увидеть его до сохранения. Молчаливое обрезание различающей части названия затруднит выбор пользователю.

Для внешней ссылки проверьте допустимое формирование адреса и согласованное поведение вкладки. Произвольная строка не должна превращаться в исполняемое действие. Эта проверка относится к границе контента и HTML и не требует добавлять новый административный процесс.

Сопровождение после переноса разделов

Когда раздел сайта меняет адрес, меню может обновляться автоматически по ссылке на сущность либо хранить буквальный URL. Оба варианта встречаются, но их нельзя смешивать без понимания. В инструкции укажите, что редактор должен проверить после переноса: основной пункт, вложенные ссылки и мобильное представление.

Если предусмотрено перенаправление старого адреса, это помогает старым закладкам, но не отменяет обновление текущей навигации. Меню должно вести по принятому актуальному пути. Иначе лишний переход останется постоянной частью каждого пользовательского действия.

В итоговом отчёте зафиксируйте работающий путь редактора и посетителя. Он показывает, что управление контентом и семантика ссылок согласованы в реальном рендере, а не только в отдельном шаблоне разработчика.

Связанные разборы

Для смежных решений пригодятся материалы: Архитектура сайта услуг: как построить разделы без страниц-дублей. В общей структуре сайта меню связывает разделы и страницы. Редакторская настройка должна сохранять настоящие ссылки и работу каждого пункта с клавиатуры.

Вопросы по теме

Обязательно ли выводить меню только через JavaScript?

Нет. CMS может хранить структуру, сервер выводить ссылки, а JavaScript добавлять интерактивное раскрытие.

Может ли один элемент одновременно открывать раздел и подменю?

Такой дизайн требует явного согласованного поведения. Часто понятнее разделить ссылку на страницу и кнопку раскрытия группы.

Документация и источники