1

我只想根据用户是否属于一组自定义组来使模块可见-包括如果他属于特定组则不可见。例如,广告显示为公开和注册但不显示自定义“高级”组。注册和高级版应该出现一个喊话框,但不是“未登录”。因此,据我所知,“客人”和“特殊”组毫无用处。我错过了一些非常简单的东西吗?

如果我必须使用第 3 方组件/模块来实现这一点,那么免费或便宜的将是最有益的。

谢谢。

4

2 回答 2

1

实现此目的的一种方法是编辑和创建新的访问级别。为了掩盖您在问题中提供的示例,以下方法可能有效:

您需要将客人从名为Public的根父组中取出。您可以通过以下三个步骤来做到这一点:

  1. 使用User Manager,创建一个名为“Guest”的新组,并将Public作为父组。
  2. 打开用户管理器选项
  3. 将Guest User Group更改为您的新组Guest

从现在开始,您网站上的访客将被放入访客组。现在您可以为广告创建访问级别。因此,创建一个新的访问级别,将其命名为“非高级用户”并添加GuestRegistered。现在将此访问级别应用于模块,它应该可以工作。请注意,高级组不能注册为父母。

接下来是喊话框的访问级别。我看到此访问级别有两个选项。其中之一是创建一个新的访问级别并为其添加注册高级。不过,一种更简单的方法是将Premium组添加到已存在的名为Registered的访问级别。

有用的 ACL 链接:

于 2012-09-25T22:34:12.497 回答
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 = '' ; ;
    }
?>
于 2013-06-11T05:24:02.660 回答