我有两个需要菜单链接的类似页面。第1页显示给A组成员。向所有不是A组成员的人显示第2页。我有一个“访客”组,其中包括未登录的所有人。但是有些用户是A组的成员。和B组。根据他们是否是A组成员,我无法弄清楚如何只显示一个链接。如果我创建的访问级别仅包含A组,而其中一个包含所有其他组,并且有人在两个组中,则他们将看到两个链接,这是多余的,因为页面是同一页面的不同版本。有什么想法吗?
答案 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()
的答案。我不确定它是否会像我最初建议的那样起作用,但至少你有一个起点和部分来完成解决方案。