Drupal: как перестроить навигацию по меню

В Drupal 7.0, когда я меняю путь / меню маршрутизации с типа MENU_NORMAL_ITEM на тип MENU_CALLBACK, Drupal 7.0 не удаляет элемент из menu_links Таблица. Я не уверен, является ли это ошибкой или нет, но я подал ее в основную команду.

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

Я знаю, что могу переименовать отдельный маршрут меню, очистить кэш / обновить, а затем присвоить элементу имя, чтобы получить сброс любой отдельной ссылки на маршрут / меню. Я ищу одну команду, которую я могу запустить (или функцию для вызова, или набор команд) и знаю, что вся навигация по меню актуальна, не беспокоясь о том, что я отыскал какую-то другую часть системы, связавшись с внутренними компонентами.

Это существует? Если вы собираетесь упомянуть drush или devel, вы великолепны, но мне нужны конкретные инструкции по этим инструментам.

8 ответов

Решение

Обратите внимание, что хотя есть варианты перестроить меню (см. Другие ответы), они могут или не могут работать для устранения проблем с ссылками меню.

Перестройка меню просто перестраивает пункты маршрутизатора меню и ссылки меню, поскольку они автоматически генерируются на основе пунктов маршрутизатора меню. Есть известные проблемы с этим, например, переименование ссылок в меню ( http://drupal.org/node/550254). Если ссылки меню были настроены или добавлены вручную (или Drupal считает, что они были изменены...), то они не будут затронуты.

Как уже упоминалось в другом вопросе, тесная связь между этими двумя системами, вероятно, изменится в D8, так что вам придется объявлять ссылки меню отдельно от пунктов меню маршрутизатора.

Вот еще один вариант, когда вы не можете получить доступ к сайту или у вас не установлены Devel или Drush. Создайте файл, такой как rebuild.php, и поместите его в корень Drupal (хотя это не имеет значения, потому что chdir переключится на указанный корень Drupal). Затем, после того, как вы посетите этот скрипт, он должен перестроить меню, и все должно быть хорошо на сайте.

<?php
  // Bootstrap
  // Change chdir to the full path of your Drupal root
  chdir('/home/myusername/public_html/');
  define('DRUPAL_ROOT', getcwd());
  require_once './includes/bootstrap.inc';
  drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

  // Rebuild
  menu_rebuild();
?>
variable_set('menu_rebuild_needed', TRUE);

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

Это то, что я вернулся в Hook_menu, чтобы очистить все пункты меню:

возвратный массив (); //$ элементов;

Посещение страницы со списком модулей обычно перестраивает меню.

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

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

http://cyrve.com/screenshots/devel_theme_snap-20080113-205127.jpg

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

Если у вас установлен модуль Devel, вы можете перейти на страницу конфигурации меню (/ admin / build / menu) и затем выбрать меню Devel.

Внутри этой страницы появятся опции меню Перестроить.

В D7 страница конфигурации меню переместилась в admin/structure/menu/ .

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

Другие вопросы по тегам