web-dev-qa-db-fra.com

Afficher les champs supplémentaires uniquement pour certains utilisateurs ou niveaux d'accès

J'ai une série de champs supplémentaires (prix) pour mes articles K2 que je souhaite uniquement montrer aux utilisateurs connectés. Pour en ajouter davantage, je dois afficher un champ pour un groupe d'utilisateurs (prix A) et un champ différent pour un autre groupe d'utilisateurs (prix B). Comment puis-je accomplir cela?

Je sais que je peux effectuer des contrôles de niveau d'accès pour les modules, mais comme il s'agit de champs supplémentaires attachés aux éléments K2, je cherche un moyen de le faire.

1
Michael Yaeger

J'ai pu accomplir cela en utilisant le code suivant (sous forme abrégée):

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

En gros, je vérifie si l'utilisateur est connecté, puis parcoure les champs supplémentaires pour voir si le nom du champ est "Prix A" et si l'utilisateur appartient au groupe d'utilisateurs "Prix A" (ID = 25). Si cela correspond, je publie le prix et je passe à autre chose. Sinon, il fait la même vérification pour "Prix B." Si un champ supplémentaire pour le prix n'est pas attribué ou si l'utilisateur n'a pas de niveau de prix, je lance un message encourageant! ;)

2
Michael Yaeger

Sans installer K2 et sans manipuler le code, je ne peux que vous donner mon avis. Vous devez remplacer l'affichage pour l'affichage des champs personnalisés. Parcourez chacun des champs et utilisez des instructions conditionnelles pour déterminer la visibilité des champs en fonction du niveau ou du groupe d'accès utilisé.

0
Terry Carter