web-dev-qa-db-ja.com

特定のユーザーまたはアクセスレベルに対してのみ追加フィールドを表示する

ログインしているユーザーにのみ表示したい、K2アイテム用の一連の追加フィールド(価格)があります。さらに追加するには、1つのフィールドを1つのユーザーグループ(価格A)に表示し、別のフィールドを別のユーザーグループ(価格B)に表示する必要があります。どうすればこれを達成できますか?

モジュールのアクセスレベルチェックを実行できることはわかっていますが、これらはK2アイテムにアタッチされた追加のフィールドであるため、これを達成する方法を探しています。

1
Michael Yaeger

私は次のコード(省略形)を使用してこれを達成できました。

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

基本的に、ユーザーがログインしているかどうかを確認し、追加のフィールドを実行して、フィールド名が「価格A」であり、ユーザーがユーザーグループ「価格A」(ID = 25)に属しているかどうかを確認します。一致する場合は、価格を出力して次に進みます。そうでない場合は、「価格B」についても同じチェックが行われます。価格の追加フィールドが割り当てられていない場合、またはユーザーに価格レベルがない場合は、心強いメッセージを送ります! ;)

2
Michael Yaeger

K2をインストールしてコードをいじらないと、私はあなたに私の考えを与えることができるだけです。カスタムフィールドビューの表示を上書きする必要があります。各フィールドをループし、条件ステートメントを使用して、アクセスレベルまたはグループに基づいてフィールドの可視性を決定します。

0
Terry Carter