[Taxonomy] Contrôle du mode obligatoire.

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour bonjour

Il est possible grâce à la taxonomy de définir un choix obligatoire sur certains vocabulaire.

Mon soucis est que j'aimerai rendre ce caractère obligatoire, obligatoire mais pas pour tous.

Je m'explique :

J'ai un drupal avec 4 "zones"
Chacune de ces zones étant dédiée à un pool d'utilisateur différent est représentée par un vocabulaire de taxonomy + les enfants de ce vocabulaire.

Pour chaques "zones":
- tout les pools d'utilisateurs peuvent lire
- seul le pool d'utilisateurs peut écrire dans sa zone

Jusque là, aucun soucis.
Si je coche la sélection obligatoire d'une taxonomy pour chaque "zone", cela fonctionne parfaitement.

Compliquons les choses :
Je rajoute un pool validateur, et un pool administrateur.
Ces deux pools peuvent écrirent partout.
Le soucis c'est que le caractère obligatoire de sélection de la taxonomy pour chaque zone fait qu'un article écris pas l'un des membres de ces pools se retrouve instantannement dans les 4 zones.

Avez-vous trouvé un moyen pour permettre de définir des comportements différents au niveau de la taxonomy en fonction de l'appartenance à un groupe d'un utilisateur, ou pas ?

Je continue de chercher,
@peluche

Version de Drupal : 

Salut,

La taxonomie est matérialisée par un - ou plusieurs - champ dans le formulaire d'édition d'un node. Ce champ peut être obligatoire ou pas.

On pourrait donc reformuler ta demande en disant "comment rendre un champ de formulaire obligatoire ou non en fonction de certains critères (comme le rôle utilisateur)", ou encore comment modifier la propriété #required d'un champ de formulaire.

Pour ça, on utilise le hook_form_alter() qui permet d'intercepter et de modifier absolument tous les formulaires d'un site Drupal AVANT qu'ils ne soient affichés. Il faut donc créer ton propre module dans lequel tu implémenteras ce hook.

En pseudo-code, ça donne :

<?php
function MONMODULE_form_alter($form_id, &$form) {
  global
$user;

 
// Vérifie qu'on est sur le bon formulaire
 
if ($form_id == 'form_a_modifier') {
   
// Vérifie qu'on a le bon type d'utilisateur
   
if (in_array('administrator', $user->roles)) {
     
// Rend la taxonomie du vocabulaire 5 facultative
     
$vid = 5;   // à modifier selon ton site
     
$form['taxonomy'][$vid]['#required'] = FALSE;
    }
  }
}
?>

Avec ce code, tu peux changer le caractère obligatoire de n'importe quel champ en fonction de TES critères.

Je comprends pas trop comment ce que tu appelles "zone" ?
Utilises-tu un module genre taxonomy access control pour dire qui a le droit de creer un contenu ?

Perso ce que je ferai c'est creer un type de contenu par "zone", associer chaque contenu a un seul vocabulaire (propre a la zone) et ensuite simplement creer un role par zone et lui donner le droit de creer ce type de contenu.

Les admin qt a eux auront le droit de creer tous les types de contenu.

réponse tardive d'un week end chargée.

Je test le bout de code et je reviens.

zone ? euh hm, exemple ^^

  • Zone Chocolat
    |- bonbons
    |- pralines
    |- noir
    |- au lait
    |- blanc

  • Zone Glaces
    |- au lait
    |- à la crêmes
    |- etc.