【问题标题】:Joomla Error Messages for Specific User Group特定用户组的 Joomla 错误消息
【发布时间】:2017-02-18 23:28:09
【问题描述】:

我正在尝试为 Joomla 3.6 中的不同用户组设置客户错误消息。我们已经在我们网站的前端锁定了内容,目前有一条通用消息告诉用户登录才能看到它,但是我们最近调整了我们的用户组以创建多个访问级别,因此即使在登录后仍然可能成为用户看不到的内容。在这些情况下,我需要能够显示特定于该用户组的消息,而不是通用的“请登录”。

我之前曾为自定义消息使用过语言覆盖,但我发现没有选项可以将其显示给特定组。我对代码知之甚少,Google 没有透露任何现成的答案。

【问题讨论】:

    标签: joomla usergroups


    【解决方案1】:

    尝试将文章用于消息并使用用户组的权限对其进行过滤。

    【讨论】:

    • 现在这看起来就是我要做的。我将更改我们当前向所有人显示的消息为通用消息,然后通过模块用户用户组权限以提示特定组采取某些操作。
    【解决方案2】:

    如果不进行一些编程,您将不容易实现。但简而言之,您可以创建一个非常简单的插件,该插件将捕获某些 Joomla 事件。

    例如,Joomla 甚至有 onUserLogin,它允许您在用户登录时执行不同的操作。您的自定义插件甚至可以捕获这一点,检查一些参数,然后将特定于组的消息添加到队列中。此外,您可以获取当前消息队列,解析或清空它,然后添加特定于组的消息。

    您可以对任何其他 Joomla 事件(如 onUserLogout、onUserLoginFailure 等)执行相同操作。有很多活动可供选择。

    至于消息特定组,您可以添加自己的类似这样的通用消息:

    COM_USERS_ERROR_LOGIN_GUEST

    COM_USERS_ERROR_LOGIN_REGISTERED

    COM_USERS_ERROR_LOGIN_ADMIN

    然后,您只需使用“COM_USERS_ERROR_LOGIN_”字符串并向其添加组名(或 ID,当语言为非英语时)。就是这样。

    任务似乎并不太复杂,但您仍然需要了解一些编码才能创建一个插件,该插件将捕获 Joomla 事件。没有其他方法可以做到这一点。

    【讨论】:

      【解决方案3】:

      这可能会让你有所收获:

      $groups = JUserHelper::getUserGroups((int) $user->user_id); 
      
      if(in_array(8, $groups))
      { 
      
          $level = 'admin';
      
      } elseif (in_array(4, $groups)) {
      
          $level = 'globalmoderator';
      
      } elseif (in_array(3, $groups)) {
      
          $level = 'moderator';
      
      } elseif (in_array(2, $groups)) {
      
          $level = 'user';
      
      } else {
      
          $level = 'guest';
      
      }
      

      【讨论】:

      • 谢谢!我会在哪里应用这个?
      • 您可以在模板覆盖文件中使用它
      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 2016-08-11
      相关资源
      最近更新 更多