仅向某些用户或组显示Joomla K2额外字段

时间:2016-02-12 23:22:51

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

我的K2项目有一系列额外字段,我只想向登录用户显示。为了增加更多的复杂性,我需要向一个用户组显示一个字段,向另一个用户组显示不同的字段。怎么样,我可以做到这一点吗?

我知道我可以对模块进行访问级别检查,但由于这些是附加到K2项目的额外字段,因此我不知道如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

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

<?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; ?>

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

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