/ Правильное меню

Правильное меню

Что такое НЕправильное меню на сайте?

  1. Когда посетитель кликает на один из пунктов и получает 404-ю ошибку (страница не найдена). Т.е. ссылка «битая», указанного в меню адреса нет.
  2. Когда редактор сайта без привлечения программиста не может добавить/убрать/переименовать пункт меню.

Как такое возможно?

Если в макете дизайна меню выводится не программным кодом, а вручную (ХТМЛ-ом) — быстро, дёшево, сердито!
Например, так:

<ul>
   <li><a href="#">Пункт меню 1</a></li>
   <li><a href="#">Пункт меню 2</a></li>
   <li><a href="#">Пункт меню 3</a></li>
   <li><a href="#">Пункт меню 4</a></li>
   <li><a href="#">Пункт меню 5</a></li>
   <li><a href="#">Пункт меню 6</a></li>
   <li><a href="#">Пункт меню 7</a></li>
</ul>
  1. Если/когда редактор сайта добавит/удалит фигурирующий в этом меню раздел, а меню отредактировать забудет или не знает, что сделано неправильно, и надо вручную править макет — будет «битая ссылка» (404-я ошибка)
  2. Для редактирования такой «красоты» придётся править макет дизайна, а редатору сайта это должно быть запрещено!

Откройте макет дизайна (разработка / макеты дизайна / ваш макет) и посмотрите, у вас не так ли, случайно?!

Как же правильно?

По задумке Неткэтовцев должно быть так:

  • Надо в поле «Шаблоны вывода навигации» закодить шаблон навигации
  • В нужном месте вызвать специально для этого предназначенную функцию nc_browse_sub

Надо заметить, что давным-давно всё так просто и было. Одно и то же меню в «шапке» отображалось в одном дизайне, в «подвале» оно же, но в другом. А с годами всё изменилось…

Бывают сложности

Сейчас «менюшек» может быть несколько... независимых... в разных частях страницы.

Например, в подвале надо отобразить три блока меню: Информация, Компания, Помощь.

Img

В каждом из этих меню по 4 пункта. Как же это сделать? Легко! Структуру каталогов в админке делаем такую, как на картинке ниже:

Img

После в нужном месте макета дизайна вызываем упомянутую выше функцию nc_browse_sub с указанием требуемого раздела. В нашем примере надо будет вызвать функцию 3 раза. Как-то так, например:

<h4><?=$nc_core->subdivision->get_by_id( 17, "Subdivision_Name" )?></h4>
<?= nc_browse_sub(17, $cat_template); ?>

Обратите внимание, что название блока (первая строка кода между тэками h4) тоже берется из базы, а не «зашито» в макете дизайна. Название блока это название раздела из которого берутся пункты меню (названия подразделов). Измените название раздела — изменится название блока в публичной части сайта. Вы никогда не забудете поправить меню и/или название блока меню в шаблоне сайта — этого и не требуется, оно «автоматом» изменится.

А как вывести меню из произвольных разделов и подразделов?

Например, в «подвале» сделали всё «по красоте» (как в примере выше), а в «шапке» надо добавить выборочно несколько пунктов из «подвальных» менюшек (напомню: у нас и три)…
Можно сделать так:

<?=listQuery("SELECT Hidden_URL, Subdivision_Name from Subdivision WHERE Subdivision_ID IN (".$template_settings['MENU_TOP'].") ORDER BY Priority LIMIT 10", "<a href='\$data[Hidden_URL]'>\$data[Subdivision_Name]</a>", " ")?>

Старая-добрая listQuery снова выручает. Реально самый простой вариант.

Как видно из примера, из настроек макета ($template_settings['MENU_TOP']) берётся список айдишников разделов (вида: 1,7,23), делается запрос в базу, и результат отображается в том месте, где размещён данный код.

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

Зачем весь этот «геморрой»?! (простите мой французский!)

Чтобы избежать проблем, указанных в начале статьи.
Плюс это:

  • Редактор сайта переименует раздел — он автоматически изменится в меню.
  • Удалите раздел — ссылка на него исчезнет из меню.
  • По какой-то причине придётся изменить ссылку на раздел — она изменится и в меню (ссылка на раздел может изменться в случае перемещения раздела из одного в другой — редактору сайта и в голову не придёт, что такое возможно (что ссылка сама может изменится) и вот косяк — 404 ошибка на сайте)

Правда ведь, красота?!

Назад к списку статей