【问题标题】:Joomla: Add a page class depending on user groupJoomla:根据用户组添加页面类
【发布时间】: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">

【问题讨论】:

    标签: joomla usergroups


    【解决方案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 违规:stackoverflow.com/a/63914758/2943403
    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2010-11-11
    • 2019-07-09
    • 1970-01-01
    • 2020-07-03
    相关资源
    最近更新 更多