Joomla:根据用户组添加页面类

Posted

技术标签:

【中文标题】Joomla:根据用户组添加页面类【英文标题】:Joomla: Add a page class depending on user group 【发布时间】:2012-10-09 14:00:22 【问题描述】:

Joomla 2.5 有没有办法将特定的 css 类添加到特定于登录用户组的正文中。

例如,我有四个用户组,个人高级版、个人标准版、企业高级版和企业标准版。我想要类似的东西:

<body class="individual-standard">

<body class="corporate-standard">

这是当前的正文标签:

<body id="ff-<?php echo $fontfamily; ?>" class="<?php echo $fontstyle; ?> <?php echo $pstyle; ?> <?php echo $bgstyle; ?> <?php echo $pageclass; ?> iehandle">

我试过把这个放在头脑中:

 $user =& JFactory::getUser();
    $pageclass ="";
    if(array_key_exists('individual premium',$user->groups))
    $pageclass .="individual-premium";
    
    if(array_key_exists('corporate premium',$user->groups))
    $pageclass .="corporate-premium";
    
     if(array_key_exists('corporate standard',$user->groups))
    $pageclass .="corporate-standard";
    
     if(array_key_exists('individual standard',$user->groups))
    $pageclass .="individual-standard";
    

这是body标签:

<body id="ff-<?php echo $fontfamily; ?>" class="<?php echo $fontstyle; ?>  <?php echo $pstyle; ?> <?php echo $bgstyle; ?> <?php echo $pageclass; ?> iehandle">

【问题讨论】:

【参考方案1】:

您首先获取用户组,然后按照以下代码设置类-

在模板文件夹的 index.php 中

$user =& JFactory::getUser();
    $pageclass ="";
    if(array_key_exists('individual premium',$user->groups))
    $pageclass .="individual-premium";
    
    if(array_key_exists('corporate premium',$user->groups))
    $pageclass .=" corporate-premium";
    
     if(array_key_exists('corporate standard',$user->groups))
    $pageclass .=" corporate-standard";
    
     if(array_key_exists('individual standard',$user->groups))
    $pageclass .=" individual-standard";
    

       <body id="ff-<?php echo $fontfamily; ?>" class="<?php echo $fontstyle; ?>  <?php echo $pstyle; ?> <?php echo $bgstyle; ?> <?php echo $pageclass; ?> iehandle">

例如,如果“企业高级”和“企业标准”组中的用户 页面类将是-corporate-premium corporate-standard

【讨论】:

谢谢@Irfan。我刚刚更新了我的问题。我需要添加两个额外的用户组。我尝试了您的原始代码,但我不确定如何将 > 工作到我当前的正文标记中。我不断收到这样的信息: @user1670411:我已经更新了代码。如果没有更新,如果你能发布你的完整代码就好了,你是如何将我的代码应用到你的? 对不起,但这仍然不起作用。我完全按照您的方式尝试了代码。 @user1670411:ok,能否请您给我$groups=& JFactory::getUser()->groups;print_r($groups) 的输出以及更新后的输出是什么; 对不起,我的 PHP 知识有限。我如何给你输出?【参考方案2】:

考虑“隐藏”字段,其中“较低”用户组将隐藏更多而“较高”将隐藏更少(最高的什么都没有),最好以金字塔的方式使其“独占”,一些喜欢:

<?php $user =& JFactory::getUser();
    $pageclass ="";
    if(array_key_exists('Reg-D group ID',$user->groups))
    $pageclass .="reg-d";
     else if(array_key_exists('Reg-C group ID',$user->groups))
         $pageclass .=" reg-c";
          else if(array_key_exists('Reg-B group ID',$user->groups))
              $pageclass .=" reg-b";
               else if(array_key_exists('Reg-A group ID',$user->groups))
                   $pageclass .=" reg-a";
                   
?>

其中 $user->groups 变量返回用户组 ID,here an alternative

我不确定代码,你怎么看?

【讨论】:

关于编码标准的提示:else if 两个词违反了 PSR-12 标准——您应该将 elseif 写成一个词。由于您的条件块使用elseif 语句,因此只会附加一个字符串;出于这个原因,我推荐一个查找数组,它可以更简洁地转换数据——这也更容易阅读和维护。 所以查找和翻译看起来像这样:3v4l.org/092H6 另外,我想提一下另一个 PSR-12 违规:***.com/a/63914758/2943403

以上是关于Joomla:根据用户组添加页面类的主要内容,如果未能解决你的问题,请参考以下文章

程序化joomla用户创建与登录显示冲突

最简单的Joomla下载管理器

将文件上传器添加到 Joomla 管理组件

上下文模块 - Joomla 2.5

Joomla 3和VM密码重置重定向到VM寄存器

joomla 自定义表单注销用户