【问题标题】:Display Joomla K2 Extra Fields only to Certain Users or Groups仅向某些用户或组显示 Joomla K2 额外字段
【发布时间】:2016-05-24 06:28:33
【问题描述】:

我的 K2 项目有一系列额外字段,我只想向已登录的用户显示这些字段。为了增加复杂性,我需要向一个用户组显示一个字段,向不同的用户组显示一个不同的字段。如何,我怎样才能做到这一点?

我知道我可以对模块进行访问级别检查,但由于这些是附加到 K2 项目的额外字段,我正在摸索实现此目的的方法。

【问题讨论】:

    标签: joomla joomla3.0 joomla-k2 usergroups access-levels


    【解决方案1】:

    我能够使用以下代码(缩写形式)完成此操作:

    <?php $user = JFactory::getUser(); ?>
    <?php if(!$user->guest): ?>
    <!-- Prices -->
    <div class="moduletable">
    <h3 class="specs">Pricing</h3>
    <?php
      $none = true; 
      foreach ($this->item->extra_fields as $key=>$extraField) {
        if($extraField->value && $extraField->name=='Price A' && in_array(25,$user->groups)) {
          echo $extraField->value;
          $none = false;
          break;
        }
        elseif($extraField->value && $extraField->name=='Price B' && in_array(26,$user->groups)) {
          echo $extraField->value;
          $none = false;
          break;
        }
      }
      if ($none) echo '<br/><p>Coming Soon!</p>';
    ?>
    </div>
    <?php endif; ?>
    

    基本上,我检查用户是否已登录,然后运行额外的字段以查看字段名称是否为“Price A”并且用户是否在用户组“Price A”中(ID=25) .如果匹配,我输出价格并继续前进。如果不是,它对“价格 B”进行同样的检查。如果没有分配额外的价格字段或用户没有价格水平,我会发出令人鼓舞的消息! ;)

    注意:您必须确保您的主题中调用项目额外字段的所有 K2 模板都有代码,以防止这些额外字段显示内容,否则您将面临向公众显示内容的风险。这可以包括您的 com_k2/templates 文件夹中的任何 PHP 文件,您的 K2 设置在其中指定要显示的额外字段,或者您手动强制它们在模板中显示的位置。

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 2013-06-24
      • 2014-11-01
      • 2014-10-24
      • 2015-02-15
      • 2011-07-18
      • 2013-03-28
      • 2014-03-05
      • 2011-11-09
      相关资源
      最近更新 更多