Управление доступом
В наших примерах мы пока что просто установили ключ доступа к элементу м ню в положение TRUE. Это означает, что к нашему меню может получить доступ угодно. Обычно доступом меню управляют с помощью определения разрешен в модуле, используя функцию hook_perm() и проверяя эти разрешения с помощью функции user_acces(). Давайте определим разрешение, названное greeting (получение приветствия); если пользователь не имеет прав, которые гпх доставляет это разрешение, будет выдано сообщение Access denied ("Нет доступ когда он или она попробует перейти по адресу http ://example.com/ ?q-mymenu.
Таким образом, система меню служит "привратником", определяющим, какие пути могут быть разрешены, а какие запрещены в соответствии с правами доступа пользователя.
Элементы меню могут быть вложенными. Например, элемент меню с набором path, установленным в положение f oo/bar. будет дочерним по отношению к элементу меню с путем f оо. Определяя доступ к элементу меню. Drupal будет смотреть на ключ доступа к полному пути элемента меню и использовать его. Если ключ доступа имеет значение true, доступ будет предоставляться, даже если ключ доступа родителя будет иметь значение false.
Если элементу меню не назначен никакой ключ доступа, будет использоваться ключ доступа его родителя. Если и родитель не имеет ключа доступа. Drupal осуществит рекурсию всех путей выше по дереву, пока не найдет ключ доступа (ключ доступа для корня дерева имеет значение TRUE). Локальные задачи — общие вложенные элементы меню. Пример, показывающий, разрешен или запрещен доступ пользователю на основании установок доступа элемента меню, а также его родительского элемента.
На малопонятном, по общему признанию, жаргоне меню Drupal. обратный вызов, который отображается в виде вкладки, известен как local task (локальная задача) и имеет тип menu_local_task или menu_default_local_task. Заголовком локальной задачи должен быть короткий глагол, типа "add" (добавить) или "list" (перечислить). Локальные задачи обычно действуют на некоторый объект — узел, пользователь или поток работ.