是否可以在Joomla 2.5中创建一个用户组,其中包括不是特定组成员的所有人?

时间:2014-11-29 14:11:40

标签: joomla joomla2.5

我有两个需要菜单链接的类似页面。第1页显示给A组成员。向所有不是A组成员的人显示第2页。我有一个“访客”组,其中包括未登录的所有人。但是有些用户是A组的成员。和B组。根据他们是否是A组成员,我无法弄清楚如何只显示一个链接。如果我创建的访问级别仅包含A组,而其中一个包含所有其他组,并且有人在两个组中,则他们将看到两个链接,这是多余的,因为页面是同一页面的不同版本。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我们有一个类似的情况,我们解决它的方式是让另一个名为“GroupNotA”的用户组。然后,我们有一个用户插件,我们配置正在播放的UserGroups,并使用OnUserAfterSave事件确保每个人都有条件地在正确的用户组中,如下面的代码片段所示。有了它,我们可以使用GroupA和GroupNotA可用的菜单项等。

<强> myUserPlugin.xml

<field name="usergroup_a" type="usergroup" label="Group A" multiple="false" />
<field name="usergroup_not_a" type="usergroup" label="Group Not A" multiple="false" />

<强> myUserPlugin.php

public function onUserBeforeSave($oldUser, $isnew, $newUser)
{
    $UserGroupA = $this->params->get('usergroup_a');
    $UserGroupNotA = $this->params->get('usergroup_not_a');

    if(in_array(UserGroupA, $newUser['groups'])){
        // Use IS in Group A - do nothing?
    }else{
        // Use is NOT in Group A - Add to group $UserGroupNotA
        // add/remove from array $user['groups']
    }

但请注意,自然倾向于使用JUserHelper::addUserToGroup(),但它会再次触发OnUserAfterSave(),因此我们直接操纵Groups数组。

示例用户插件与Joomla一起安装在plugins/user/example.php,完整文档位于Plugin/Events/User。祝你好运。

注意我刚刚意识到我们在新用户注册期间执行此操作,因此我正在改变使用事件onUserBeforeSave()的答案。我不确定它是否会像我最初建议的那样起作用,但至少你有一个起点和部分来完成解决方案。