Я реализовал hook_menu_alter для добавления пользовательской функции доступа к стандартному пункту меню узла /% узла в Drupal 6.
function amh_workflow_menu_alter(&$items)
{
$items['node/%node']['access callback'] = '_amh_workflow_access';
}
Эта функция отлично подходит для определения доступа, когда сам узел отображается для пользователя, но пункт меню для узла всегда отображается. Я хотел бы, чтобы пункт меню отображался только для пользователей, когда у них есть доступ к странице.
Я несколько раз пытался очистить кеш, но пункт меню упрямо отказывается скрывать. Это кажется действительно странным, поскольку другие пункты меню (правда, я думаю, что они все используют стандартные user_access и аргументы простого доступа) все правильно скрыты или отображаются в соответствии с привилегиями пользователей.
Я не понимаю, почему сам узел защищен правильно, а не пункт меню. Мне не кажется, что обратный вызов доступа вызывается при отображении меню (отладочные сообщения в методе обратного вызова не отображаются).