Fork me on GitHub




(1) 2 »


Menu dans un theme restrient pour certain utlisateur
Régulier
Inscrit: 23/08/2003 02:31
Messages: 156
Bonjour a tous


Voici un petit probleme j'espere que la solution sera aussi facile

dans un theme utilisant une pge html

j'arive a ce que une option du menu superieur ne s'affiche que pour les admin avec ceci

<{if $xoops_isadmin}>
Lien et reference


cela fonctionne pour l'admin mais si je voulais la meme chose pour un groupe utilisateur bien precis hors admin
comment dois ecrire cela ?

Merci a tous

Posté le : 28/11/2005 14:54

Edité par alain01 sur 28/11/2005 15:37:42
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
salut,
voici comment je procède avec xoops 2.0.13.2 :
Dans le header.php à la racine du site, j'ai placé le code suivant, vers la ligne 65

$groupes 0//initialise la variable
if (is_object($xoopsUser)) //teste si c'est un membre
    
{
    
$groupes $xoopsUser->getGroups(); //récupère les groupes d'appartenance du membre
    
}
    else { 
//sinon c'est un anonyme
         
$groupes = array(XOOPS_GROUP_ANONYMOUS);
         } 

if (
in_array(1$groupes)) //regarde si "1" se trouve dans le tablea des groupes du membre
    
{
     
$xoopsTpl->assign('xoops_mon_groupe''admin'); //alors c'est un admin, on assigne une valeur qui servira dans les scripts
    
}
    else
        if (
in_array(2$groupes))
            {
            
$xoopsTpl->assign('xoops_mon_groupe''utilisateur');
            }
            else
                if (
in_array(3$groupes))
                    {
                    
$xoopsTpl->assign('xoops_mon_groupe''anonyme');
                    } 
                    else
                        if (
in_array(4$groupes))
                            {
                            
$xoopsTpl->assign('xoops_mon_groupe''cdi');
                            } 
                            else
                                if (
in_array(7$groupes))
                                    {
                                    
$xoopsTpl->assign('xoops_mon_groupe''profs');
                                    }


à adapter avec tes propres noms et numéros de groupes.
à voir aussi, le cas où tes users font partie de plusieurs groupes.

Chez moi, les inscrits font forcéments partis du groupes 'enregistrés', et d'un autre groupe avec plus de droits.
Donc je ne teste que le cas du second groupe auquel je les ai rattaché.
Mais on peut adapter si nécessaire.

Ensuite dans ton thème, tu peux tester, en essayant de les afficher avec ce code :

<{$xoops_mon_groupe}>


Colle ce code dans ton thème, et tu devrais voir s'afficher le groupe de l'utilisateur, avec lequel tu te connectes.

Si c'est ok, tu peux à présent les utiliser dans tes conditions d'affichage.
Citation :

<{if $xoops_mon_groupe == "admin"}>Coucou administrateur<{/if}>

<{if $xoops_mon_groupe == "profs"}>Bonjour, M. Le Professeur<{/if}>

etc...

Posté le : 28/11/2005 16:04
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Régulier
Inscrit: 23/08/2003 02:31
Messages: 156
un grand merci a toi

ca fonctionne j'ai fortement implifier le code car besoin de tdtcter 1 seul groupe


encore merci

Posté le : 30/11/2005 05:15
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Hello, plutôt que d'imbriquer des if, préfére la fonction switch :

switch($groupe)
{
 case 
"1":
      
$xoopsTpl->assign('xoops_mon_groupe''admins');
      break 
1;
 case 
"2":
      
$xoopsTpl->assign('xoops_mon_groupe''utilisateurs');
      break 
1;
 case 
"3":
 default:
      
$xoopsTpl->assign('xoops_mon_groupe''anonymes');
      break 
1;
 case 
"4":
      
$xoopsTpl->assign('xoops_mon_groupe''profs');
      break 
1;
}


Attention, pas testé.

Posté le : 30/11/2005 10:44

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Merci Alain, c'est plus clair et léger en effet.
je vais l'appliquer

Posté le : 30/11/2005 11:39
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Je t'ai encore grillé sur le post "input", nn ?

Posté le : 30/11/2005 11:43

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
chut personne l'a vu

Posté le : 30/11/2005 11:44
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Voilà, en effet ça marche impeccablement bien !

quelques modifs cependant

$groupes 0;
if (
is_object($xoopsUser))
    {
    
$groupes $xoopsUser->getGroups();
    }
    else {
         
$groupes = array(XOOPS_GROUP_ANONYMOUS);
         } 

switch(
$groupes)
{
 case (
in_array(1$groupes)):
      
$xoopsTpl->assign('xoops_mon_groupe''admin');
      break 
1;
 case (
in_array(2$groupes)):
      
$xoopsTpl->assign('xoops_mon_groupe''utilisateur');
      break 
1;
 case (
in_array(3$groupes)):
      default:
      
$xoopsTpl->assign('xoops_mon_groupe''anonyme');
      break 
1;
 case (
in_array(4$groupes)):
      
$xoopsTpl->assign('xoops_mon_groupe''prof');
      break 
1;
}


Juste une modification pour le 'case', '$groupes' étant un tableau.
Et attention pour les conditions dans ton thème, si un membre fait partie de plusieurs groupes, la variable prendra la valeur du premier nombre rencontré.
Donc s'il fait partie par exemple, de utilisateur et prof, c'est "utilisateur" qui sera utilisé, et ça peut poser problème, si tu veux limiter un accès ou un affichage, réellement qu'aux profs.
Du coup, j'ai enlevé ce cas de figure (utilisateur), vu que tous mes membres sont utilisateurs par défaut, je teste seulement l'appartenance, aux autres groupes créés par mes soins.
Ou alors il faut virer les 'break' pour que toutes les conditions soient testées, et que la plus grande valeur (donc un autre groupe que 'utilisateur' soit affectée à la variable)

j'espère être clair

C'est normal qu'on mette des "break 1" de partout ?

http://sg2.php.net/switch

a priori, 'break' est suffisant

Posté le : 30/11/2005 11:50

Edité par blueteen sur 30/11/2005 12:05:22
Edité par blueteen sur 30/11/2005 12:09:00
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
"Break 1" permet de sortir du test.
Sinon, il parcourt tous les tests suivants

default : dans le cas où la variable n'est pas trouvée, il vaut mieux le mettre, c'est plus propre :

default:
      
$xoopsTpl->assign('xoops_mon_groupe''anonymes');
      break 
1;

ou
default:
      break 
1;


ou encore
case (in_array(3$groupes)):
default :
     
$xoopsTpl->assign('xoops_mon_groupe''anonyme');
     break 
1;

Posté le : 30/11/2005 11:56

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Menu dans un theme restrient pour certain utlisateur
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Citation :

Et attention pour les conditions dans ton thème, si un membre fait partie de plusieurs groupes, la variable prendra la valeur du premier nombre rencontré.
Donc s'il fait partie par exemple, de utilisateur et prof, c'est "utilisateur" qui sera utilisé, et ça peut poser problème, si tu veux limiter un accès ou un affichage, réellement qu'aux profs.
Du coup, j'ai enlevé ce cas de figure (utilisateur), vu que tous mes membres sont utilisateurs par défaut, je teste seulement l'appartenance, aux autres groupes créés par mes soins.


1) C'est pas bien de modifier son post, une fois publié, sauf erreur ou fautes

2)break 1 est + propre : sorti d'1 niveau

3) Tu peux également commencer par tester par le groupe le plus restrictif dans la configuration de tes groupes :

case 8
...
break 1;
case 7
...
break 1;
case 6
...
break 1;

etc...

Posté le : 30/11/2005 12:04

Open in new window
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

148 Personne(s) en ligne (127 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 148 | Plus ...