Код для доступа к странице
Я хотел бы использовать PHP-код в узлах определенного типа контента. Я могу проверить разрешение пользователя с помощью глобального $user
, может ли пользователь получить доступ к узлу.
Существует ли какой-либо модуль для настройки представления содержимого созданной страницы?
Безопасно ли проверять доступ к странице с помощью этого кода?
global $user;
// Check to see if $user has the administrator role.
if (in_array('administrator', array_values($user->roles))) {
// Do something.
}
2 answers
Я думаю, что вы ищете модуль доступа к узлу. Их много, например http://drupal.org/project/content_access (настройте доступ с помощью ролей напрямую) или http://drupal.org/project/tac_lite (контролируйте доступ, добавляя специальные термины таксономии) и многое другое.
Для вашего второго вопроса вы всегда должны определять некоторые разрешения (с помощью hook_perm в D6, hook_permission() в D7), а затем проверить это. Это позволяет настроить через пользовательский интерфейс, какие роли имеют это разрешение, и код не привязан к вашей конкретной конфигурации.
Обычно на Drupal вы не проверяете, есть ли у пользователей определенная роль, но есть ли у них определенное разрешение; например, вместо проверки того, имеет ли пользователь роль администратора, вы проверяете, есть ли у пользователя разрешение на администрирование узлов. Это позволяет добавлять разрешения к другим ролям без изменения существующего кода.
Ссылка на определенную роль недостаточно универсальна для использования в модуле, который может быть установлен на разных сайтах Drupal; в случае, если вы хотите чтобы проверить, есть ли у пользователей одна из определенных ролей, вы должны проверить каждую роль, в то время как с разрешением вы, возможно, проверяете только одно разрешение.
Помимо модулей, о которых сообщает Berdir, если тип контента - страница книги, то вы можете использовать Доступ к книге, который специфичен для страниц книг и позволяет настроить пользователей, которые могут перемещать страницы книги между книгами.