【问题标题】:Drupal Team managementDrupal 团队管理
【发布时间】:2018-03-23 19:15:39
【问题描述】:

我是 drupal 新手(但不是编程) 我正在开发一个具有 3 个用户级别的网站。

  1. 能够更改任何用户内容的大师。
  2. 能够更改其内容和注册为其雇员的用户内容的媒介。
  3. 只能更改自己的内容的普通人。

媒体用户不能更改注册在其他媒体用户名下的基本用户的内容。

在谷歌上搜索我发现了 Organic Group 模块。但是,此模块似乎根据内容类型对用户进行分组。这不是我想要的。这更像是一个有领导和成员的团队,这些团队会发布相同的内容类型。

谁能帮帮我?

【问题讨论】:

  • "master","medium" 和 "regular" 是 Drupal 角色吗?通过“alter”,您的意思是:使用默认节点表单编辑内容?
  • 如果中等用户可以编辑所有基本用户的内容,那么可以通过简单添加 Drupal 角色来完成。但是中级用户只能编辑来自他下面的基本用户的内容。喜欢:A 队中型 - 安娜基本约翰和史蒂夫 B 队中型 - 查尔斯基本 - 玛丽、乔治和伦纳德。 ************* Ana 可以编辑 John 和 Steve 的内容,但不能编辑 Mary 的这是我无法做到的。
  • 您是否安装了“Field UI”模块?还安装了一些“用户参考”(或类似的“实体参考”......)?
  • 已安装字段 UI。用户参考 我找不到它。您的意思是引用或实体引用吗?我安装了实体参考。

标签: php drupal drupal-7


【解决方案1】:

用户层次结构

您可以使用用户字段 (/admin/config/people/accounts/fields) 来创建用户的层次结构。你可以:

  1. 创建对经理的引用
  2. 或创建许多对团队的引用

版本安全

您可以使用hook_form_alter()。在您的模块中实现此钩子时,您将能够检查用户是否可以编辑内容。

这是一个示例代码:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
    global $user;
    if ($form_id == 'TYPE_node_form') {
    // or if (strpos($form_id, '_node_form') !== false) {

        $node = $form_state['build_info']['args'][0] ;

        if (! check_if_user_can_edit($user, $node)) {

            drupal_set_message(t('Restricted'), 'error');
            drupal_goto('<front>');
        }
    }
}

您的check_if_user_can_edit() 函数,应检查$user 字段(团队或其他),并检查$node ($node-&gt;uid) 的所有者,如果用户能够返回TRUE编辑,或者FALSE

您还可以使用相同的check_if_user_can_edit() 函数实现hook_node_presave() 以确保不能以其他方式编辑任何节点。

【讨论】:

  • 更新hook_node_presave()
  • 天哪,这太天才了。我几乎放弃并在 laravel 中开发系统。现在我可以看到一条出路。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
相关资源
最近更新 更多