Обновление ссылок в меню

Главные вкладки

Аватар пользователя NightGhost NightGhost 30 сентября 2008 в 10:34

Когда в своём модуле делаю какую-то новую ссылку меню в хуке menu или же изменяю параметры имеющейся, то чтобы эти изменения вступили в силу, приходится (как вычитал в каком-то комменте) отключать свой модуль в админке и подключать его заново. Процесс небыстрый и очень напрягает, особенно при отладке, когда приходится довольно часто и много обновлять меню.
Возникает такой вопрос - как можно более оптимально делать обновление меню, чтобы не мучаться постоянно с отключением/подключением модуля? Смотрел в сторону кэша, но банальная очистка ничего не даёт, так как сами элементы и ссылки меню прописаны в таблицах menu_*. Так как вот правильнее перестраивать эти таблицы, какой функцией или каким действием?
Спасибо.

Комментарии

Аватар пользователя olk olk 30 сентября 2008 в 11:36

Вообще в д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');
?>

и вызывать его из адресной строки по мере надобности

Аватар пользователя NightGhost NightGhost 30 сентября 2008 в 11:40

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

Аватар пользователя NightGhost NightGhost 2 октября 2008 в 12:48

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