Tôi đã sử dụng một đoạn mã được tìm thấy trong tài liệu api D7 cho hook hook_node_access .
Mã này sẽ cấp quyền truy cập để xem nội dung "ebook" cho người dùng có quyền "xem ebook".
Bạn cần một quyền mới để kiểm soát quyền truy cập bằng cách triển khai hook_ allow ().
/**
* Implements hook_permission().
*/
function mymodule_permission() {
return array(
'view ebook' => array(
'title' => t('View Ebook'),
'description' => t('View Ebook nodes.'),
),
);
}
Bằng cách triển khai hook_node_access () Drupal có thể cấp hoặc từ chối quyền truy cập vào nút.
/**
* Implements hook_node_access().
*/
function mymodule_node_access($node, $op, $account) {
// Checks for an ebook node in view mode.
if (is_object($node) && $node->type === 'ebook' && $op === 'view') {
// Grants permission to view the node if the current user has an role
// with the permission 'view ebook'.
if (user_access('view ebook')) {
return NODE_ACCESS_ALLOW;
}
// Otherwise disallows access to view the node.
return NODE_ACCESS_DENY;
}
// For all other nodes and other view modes, don't affect the access.
return NODE_ACCESS_IGNORE;
}
Các quyền khác (chỉnh sửa, xóa, v.v.) có thể được xử lý thông qua các quyền Drupal thông thường.
Theo tùy chọn, bạn có thể xóa nội dung khỏi tổng quan của quản trị viên bằng cách triển khai hook_queryiah_NAME_alter.
/**
* Implements hook_query_TAG_NAME_alter().
*/
function mymodule_query_node_admin_filter_alter(QueryAlterableInterface $query) {
if (!user_access('view ebook')) {
$query->condition('n.type', 'ebook', '!=');
}
}