Когда в своём модуле делаю какую-то новую ссылку меню в хуке menu или же изменяю параметры имеющейся, то чтобы эти изменения вступили в силу, приходится (как вычитал в каком-то комменте) отключать свой модуль в админке и подключать его заново. Процесс небыстрый и очень напрягает, особенно при отладке, когда приходится довольно часто и много обновлять меню.
Возникает такой вопрос - как можно более оптимально делать обновление меню, чтобы не мучаться постоянно с отключением/подключением модуля? Смотрел в сторону кэша, но банальная очистка ничего не даёт, так как сами элементы и ссылки меню прописаны в таблицах menu_*. Так как вот правильнее перестраивать эти таблицы, какой функцией или каким действием?
Спасибо.
Комментарии
Вообще в д6, есть такая функция
* (Re)populate the database tables used by various menu functions.
*
* This function will clear and populate the {menu_router} table, add entries
* to {menu_links} for new router items, then remove stale items from
* {menu_links}. If called from update.php or install.php, it will also
* schedule a call to itself on the first real page load from
* menu_execute_active_handler(), because the maintenance page environment
* is different and leaves stale data in the menu tables.
*/
function menu_rebuild()
а вот в каком контексте ее вызвать ... это уже решать вам
можно например, создать файлик в корне - menu_rebuild.php, со следующим содержанием:
<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
menu_rebuild();
drupal_goto('node');
?>
и вызывать его из адресной строки по мере надобности
Да, я тоже обратил на неё внимание, когда изучал менюшный API. Эта функция используется как раз в модуле меню, только не смог увидеть результат её работы на своих линка меню, когда она выполнялась в контексте работы с основными меню.
Хорошо, спасибо за подсказку, попробую её сделать отдельным примерно таким скриптом, думаю, должно помочь, чем постоянно модули перетыкать.
Можно и модуль devel поставить, там така команда тоже есть...
Ну у меня прекрасно и этот трюк работает, я как раз добавил эту функцию как доп. действие в модуле управления меню, и ничего лишнего не потребовалось.