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();
?>
Я столкнулся с той же проблемой. Я переключился с 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/ .
Этот маленький трюк является отличным способом перестроить маршрутизатор меню, не загромождая интерфейс другим блоком.