Добавить пользовательское разрешение в конкретную модуль «группа» на странице разрешений
Вопрос
Используя пользовательский модуль, как можно добавить разрешение в группу «Core/Module" на странице разрешений без взлома модуля Core/PoNLATE?
Пример:
Решение
Как уже говорилось, было бы не хорошей идеей перечислить разрешение, реализованное модулем вместе разрешения, реализованные другим модулем; Пользователям было бы трудно найти разрешения, реализованные, например, custom_module.module, когда они указаны вместе те, которые реализованы user.module.
Если вам действительно нужно изменить порядок, используемый для перечисления разрешений (но тогда, действительно ли это необходимо), то я бы посоветовал изменить, как показан список разрешений: вместо того, чтобы перечислить их, внедряя его, вы можете Перечислите их, основываясь на разных критериях.
Для этого вам нужно:
- Осуществлять Hook_theme_registry_alter () изменить функцию темы, которая называется, когда
theme('user_admin_perm')
вызывается. - Реализовать функцию темы, просматривая код theme_user_admin_perm ().
Стоит ли это сделать? Это может быть, в зависимости от вашего клиента.
Учитывая, что первый официальный релиз Drupal 7 был выпущен, и код Drupal 7 изменится, он, вероятно, не стоит этого делать. Я бы предпочел попытаться понять, почему клиент хочет изменить порядок разрешений, перечисленных на странице администрирования, и объяснить причину, по которой его изменение - плохая идея; Если клиент настаивает на том, что код должен быть реализован для их собственных целей, то я бы заставил его понять, что код должен быть переписан, когда сайт переходит в Drupal 7, и не стоит тратить время на такие изменения, когда это возможно использовать то же время для реализации того, что это действительно необходимо.
Другие советы
Нет никакого hook_perm_alter, и эти разрешения сгруппированы с помощью модуля, поэтому, вероятно, это было бы, чтобы войти там с Hook_form_alter в этих формах (есть форма разрешения на роль вместе с основными; не уверены, используют ту же форму_ид )
Должен определить разрешение через yourmodule_perm, чтобы все остальное могло знать, что существует разрешение.
Лично я посоветовал против этого; Пусть ваше разрешение, где это будет, так что нет «Я установил этот модуль и не могу найти разрешение! О, почему разрешение было под другим модулем? !!»
Есть два способа выполнить то, о чем вы просите.
Либо через hook_form_alter
или переоценив функцию темы формы: theme_user_admin_perm
.
Для стандартного модуля ввода это не было бы хорошей идеей, так как люди, как правило, ищут разрешение модуля, просматривая свое имя. Если ваш модуль вносит некоторые изменения в стандартный поток разрешений пользователя, может быть неплохой идеей показать дополнительное разрешение вместе с по умолчанию из пользовательского модуля.