Drupal用户权限&奇怪的内容类型

时间:2014-02-05 21:55:04

标签: drupal permissions drupal-7

我在Drupal中有权限问题。我希望用户能够创建某种节点类型,但我需要两种不同的路径来赋予他们权限,让他们这样做。类型是由名为isbn2node的模块创建的内容,有两种方法可以通过它创建内容,每种方式都有不同的路径:

?=node/add/isbn2node-book

?=node/add/isbn2node_book/isbn2node

一个有下划线,另一个有连字符。第一条路径指向允许用户手动输入书籍信息的表单;第二个路径允许他们输入ISBN,搜索它,并根据结果填充表单。

我已经在人员菜单中更改了权限,因此他们可以使用第一个路径手动添加isbn2node-book内容,但是没有选项让他们使用第二个方法。对URL进行别名以使其在路径中没有node/add也不起作用。

创建重复的内容类型似乎是一个丑陋的解决方案;是否有更优雅的方式让用户访问第二条路径?

2 个答案:

答案 0 :(得分:0)

使用hook_node_access的自定义模块中的一小段代码应该这样做。

$ node是节点对象或要在其上执行访问检查的内容类型的计算机名称(如果正在创建节点,则$ node对象不可用,因此它将是字符串)。 / p>

所以这应该这样做:

function MY_MODULE_node_access($node, $op, $account) {
    if ($op == 'create') {
        $type = $node;
        if($type == 'book' && $account->uid) return NODE_ACCESS_ALLOW;
    }
}

答案 1 :(得分:0)

我想出来了,我遇到的问题是针对这种内容类型的。 ISBN2Node模块要求用户拥有管理节点权限以使用其查找和批量导入功能。

模块的hook_permission和hook_menu部分有一些额外的代码作为模块的issues thread中的修复提交。