drupal 7 - 限制对完整节点的访问

时间:2012-07-25 13:28:23

标签: permissions drupal-7 nodes

我有一个名为'logos'的内容类型,所有这些都在网格视图中并作为块输出。

我不希望用户查看完整节点,只查看视图。我已经尝试过content_access模块​​,但我的网格视图也消失了,有没有办法限制对特定内容类型的完整节点的访问?

5 个答案:

答案 0 :(得分:0)

我刚刚在重新处理页面功能

中做了一个脏修复
if ($variables['node']->type == "logos") {
            drupal_goto('404');

    }

必须有更好的方法。还有谷歌忽略节点呢?

答案 1 :(得分:0)

你可以澄清一下吗?您正在显示块视图。那么为什么不将视图限制为要显示的字段而不是显示节点?

您还可以使用字段权限(或cck权限,我忘记了确切的名称),因此请为每个字段指定权限。

答案 2 :(得分:0)

另一个选择是不按https://drupal.stackexchange.com/questions/11026/how-to-restrict-direct-access-to-the-nodes-in-drupal-7

发布节点

我测试了它,视图仍然可以显示数据。您可能需要调整样式,但默认情况下,Drupal会为未发布的节点添加一个突出显示,以区分它是未发布的。

答案 3 :(得分:0)

看看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;
}

答案 4 :(得分:0)

看看Rabbit Hole Drupal contrib模块

这是什么? Rabbit Hole是增加控制能力的模块 在实体自己的页面上查看实体时会发生什么。

也许您的内容类型永远不应该显示在其内容上 自己的页面,例如轮播中显示的图像内容类型。 Rabbit Hole可以阻止单独访问此节点 页面,通过node / xxx。

此模块将完成您所要求的:

我不希望用户查看整个节点,而仅查看视图。我有 尝试过content_access模块​​,但是我的网格视图也消失了, 一种限制访问特定内容类型的完整节点的方法?

兔子洞也是this answer中此问题链接的答案。