我有一个名为“logos”的内容类型,所有这些都在网格视图中并作为一个块输出。
我不希望用户查看完整节点,只查看视图。我尝试了 content_access 模块,但我的网格视图也消失了,有没有办法限制对特定内容类型的完整节点的访问?
我有一个名为“logos”的内容类型,所有这些都在网格视图中并作为一个块输出。
我不希望用户查看完整节点,只查看视图。我尝试了 content_access 模块,但我的网格视图也消失了,有没有办法限制对特定内容类型的完整节点的访问?
我刚刚在重新处理页面功能中做了一个肮脏的修复
if ($variables['node']->type == "logos") {
drupal_goto('404');
}
肯定有更好的办法。另外谷歌忽略节点怎么办?
你能澄清一下吗?您正在显示一个块视图。那么为什么不将视图限制在要显示的字段而不是显示节点呢?
您还可以使用字段权限(或 cck 权限,我忘记了确切的名称),因此请指定每个字段的权限。
我已经测试过了,Views 仍然可以显示数据。您可能需要调整样式,但我发现默认情况下,Drupal 会为未发布的节点添加一个突出显示以区分它是未发布的。
看看https://www.drupal.org/project/restrict_node_page_view,很简单:
/**
* Implements hook_node_access().
*/
function MYMODULE_node_access($node, $op, $account) {
// Default checks
if (!is_object($node)) {
return NODE_ACCESS_IGNORE;
}
$type = is_string($node) ? $node : $node->type;
if($op == 'view' && arg(0) == 'node' && arg(1) === $node->nid) {
// Restrict access to full MYTYPE node for anon users
if ($type == 'MYTYPE' && user_is_anonymous()) {
return NODE_ACCESS_DENY;
}
}
// Default
return NODE_ACCESS_IGNORE;
}
看看Rabbit Hole Drupal 贡献模块
这是什么?Rabbit Hole 是一个模块,它增加了控制在其自己的页面上查看实体时应该发生什么的能力。
也许您有一个永远不应该在其自己的页面上显示的内容类型,例如在轮播中显示的图像内容类型。Rabbit Hole 可以通过 node/xxx 来阻止这个节点在自己的页面上被访问。
该模块将完成您的要求:
我不希望用户查看完整节点,只查看视图。我尝试了 content_access 模块,但我的网格视图也消失了,有没有办法限制对特定内容类型的完整节点的访问?
兔子洞也是这个问题的答案中的链接中的答案。