답변:
아주 작은 커스텀 모듈을 작성하는 것이 좋으면 hook_permission()
및 의 조합을 사용할 수 있습니다 hook_node_access()
.
function MYMODULE_permission() {
return array(
'unconditionally view unpublished content' => array(
'title' => t('Unconditionally View Unpublished Content'),
'restrict access' => TRUE
)
);
}
function MYMODULE_node_access($node, $op, $account) {
// We're only bothered about the 'view' operation at the moment
if ($op == 'view') {
// If the user has access to our new permission, let 'em at it
if (user_access('unconditionally view unpublished content', $account)) {
return NODE_ACCESS_ALLOW;
}
}
// For everything else let the system decide.
return NODE_ACCESS_IGNORE;
}
새 권한을 할당 한 모든 역할은 게시 여부에 관계없이 모든 노드를 볼 수 있습니다.
먼저 위의 코드를 사용해 보았습니다. 그러나 게시되지 않은 콘텐츠에 대한 권한을 역할에 부여한 후에도 해당 역할은 여전히 게시되지 않은 콘텐츠를 볼 수 없으며 일부 편집자 역할에 매우 유용 할 수 있습니다.
view_unpublished 모듈을 사용하여 해결했습니다 .
이것이 내가 결국 만든 것입니다 ....
각 노드 유형에 대해 '모든 컨텐츠보기 권한'을 작성합니다. 노드 모듈과 거의 동일하지만 추가 옵션을 추가합니다.
/**
* Implements hook_permission().
*/
function MODULE_permission() {
$perms = array();
foreach (node_permissions_get_configured_types() as $type) {
$info = node_type_get_type($type);
$perms += array(
"view $type content" => array(
'title' => t('%type_name: View any content', array('%type_name' => $info->name)),
)
);
}
return $perms;
}
/**
* Implements hook_node_access().
*/
function MODULE_node_access($node, $op, $account) {
$type = is_string($node) ? $node : $node->type;
if (in_array($type, node_permissions_get_configured_types())) {
if ($op == 'view' && user_access('view ' . $type . ' content', $account)) {
return NODE_ACCESS_ALLOW;
}
}
return NODE_ACCESS_IGNORE;
}
Drupal 7 및 Drupal 8 용 모듈이 있습니다.
이 모듈을 사용하면 특정 유형의 게시되지 않은 노드를 볼 수 있도록 특정 사용자 역할에 대한 액세스 권한을 부여 할 수 있습니다. 이와 관련하여 액세스 제어는 매우 세분화됩니다.
공식 관리 안내서 : https://drupal.org/node/1106606을 참조 하십시오 . Kojo에서 제안한 view_unpublished 모듈은 빠르고 쉬운 솔루션입니다.
&& user_access('administer nodes')
콘텐츠를 만들 수있는 권한에 따라 달라 지지만 보안을 조금 강화하려면 이제는 "무조건적"이 아닙니다. 예를 주셔서 감사합니다!