2016-02-12 4 views
1

J'ai une série de champs supplémentaires pour mes articles K2 que je veux seulement montrer aux utilisateurs connectés. Pour ajouter plus de complexité, j'ai besoin d'afficher un champ à un groupe d'utilisateurs et un champ différent à un groupe d'utilisateurs différent. Comment puis-je accomplir cela? Je sais que je peux effectuer des vérifications de niveau d'accès pour les modules, mais puisque ce sont des champs supplémentaires attachés aux éléments K2, je cherche un moyen d'y parvenir.Afficher les champs Joomla K2 supplémentaires uniquement pour certains utilisateurs ou groupes

Répondre

0

j'ai pu y parvenir 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; ?> 

Fondamentalement, je vérifie si l'utilisateur est connecté, puis exécutez à travers les champs supplémentaires pour voir si le Le nom du champ est "Prix A" et l'utilisateur appartient au groupe d'utilisateurs "Prix A" (ID = 25). Si cela correspond, je produis le prix et passons à autre chose. Sinon, il fait la même vérification pour "Prix B." Si un champ supplémentaire pour le prix n'est pas affecté ou si l'utilisateur n'a pas de niveau de prix, je donne un message encourageant!

Remarque: Vous devez vous assurer que tous les modèles K2 de votre thème qui appellent les champs supplémentaires de l'élément ont du code pour empêcher ces champs supplémentaires d'afficher le contenu ou vous risquez de montrer le contenu au public. Cela peut inclure n'importe lequel des fichiers PHP dans vos dossiers com_k2/templates où vos paramètres K2 spécifient des champs supplémentaires à afficher ou dans lesquels vous les avez manuellement forcés à afficher dans vos modèles.