我只想根据用户是否属于一组自定义组来显示一个模块 - 包括如果他属于特定组则不可见。例如,广告显示为公共和已注册但不是自定义“高级”组。应该显示已注册和高级的shoutbox,但不会“未登录”。因此,据我所知,“客人”和“特殊”群体毫无用处。我错过了一些非常简单的东西吗?
如果我 使用第三方组件/模块来实现这一目标,那么免费或廉价的组件/模块将是最有益的。
感谢。
答案 0 :(得分:1)
实现此目标的一种方法是编辑和创建新的访问级别。为了掩盖您在问题中提供的示例,以下内容可以起作用:
您需要让访客离开名为 Public 的根父组。您可以通过以下三个步骤执行此操作:
从现在开始,您网站上的访客将被放入 Guest 组。现在,您可以为广告创建访问级别。因此,请创建一个新的访问级别,将其命名为“非高级用户”,然后添加访客和已注册。现在将此访问级别应用于模块,它应该工作。请注意,高级组不能将已注册作为父级。
接下来是shoutbox的访问级别。我看到这个访问级别有两个选项。其中之一是创建新的访问级别并向其添加已注册和 Premium 。但更简单的方法是将 Premium 组添加到名为 Registered 的现有访问级别。
有用的ACL链接:
答案 1 :(得分:0)
对于我来说,没有一个ACL级别可以100%工作,我不得不破解我正在使用的模板并添加一些代码......
<?php
// make sure user is an accepted user group
jimport( 'joomla.user.helper' );
$user =& JFactory::getUser();
$userId = $user->get( 'id' );
$groups = JUserHelper::getUserGroups($userId);
// print_r($groups);
/*
3 Author
4 Editor
5 Publisher
6 Manager
7 Administrator
8 Super Users
*/
$menu = '' ;
if (in_array("3", $groups)) {
// echo "<!-- Author Group Found! -->";
// echo '<!-- USER ID: ' . $userId . ' -->';
$menu .= "
<a href='http://yourdomain.com/authors-area'>Authors Area</a>
" ;
} elseif(in_array("4", $groups)) {
$menu .= "
<a href='http://yourdomain.com/editors-area'>Editors Area</a>
" ;
} elseif(in_array("5", $groups)) {
$menu .= "
<a href='http://yourdomain.com/publishers-area'>Publishers Area</a>
" ;
} elseif(in_array("6", $groups)) {
$menu .= "
<a href='http://yourdomain.com/managers-area'>Managers Area</a>
" ;
} elseif(in_array("7", $groups)) {
$menu .= "
<a href='http://yourdomain.com/administrators-area'>Administrators Area</a>
" ;
} elseif(in_array("8", $groups)) {
$menu .= "
<a href='http://yourdomain.com/superusers-area'>Super Users Area</a>
" ;
} else {
$null = '' ; ;
}
?>