我只想根据用户是否属于一组自定义组来使模块可见-包括如果他属于特定组则不可见。例如,广告显示为公开和注册但不显示自定义“高级”组。注册和高级版应该出现一个喊话框,但不是“未登录”。因此,据我所知,“客人”和“特殊”组毫无用处。我错过了一些非常简单的东西吗?
如果我必须使用第 3 方组件/模块来实现这一点,那么免费或便宜的将是最有益的。
谢谢。
实现此目的的一种方法是编辑和创建新的访问级别。为了掩盖您在问题中提供的示例,以下方法可能有效:
您需要将客人从名为Public的根父组中取出。您可以通过以下三个步骤来做到这一点:
从现在开始,您网站上的访客将被放入访客组。现在您可以为广告创建访问级别。因此,创建一个新的访问级别,将其命名为“非高级用户”并添加Guest和Registered。现在将此访问级别应用于模块,它应该可以工作。请注意,高级组不能注册为父母。
接下来是喊话框的访问级别。我看到此访问级别有两个选项。其中之一是创建一个新的访问级别并为其添加注册和高级。不过,一种更简单的方法是将Premium组添加到已存在的名为Registered的访问级别。
有用的 ACL 链接:
没有一个 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 = '' ; ;
}
?>