[Résolu] Trouver des utilisateurs par tag

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,

Je travail sur un site communautaire et je me heurte à une difficulté :

Le site utilise Profile2 et Organic groups. Les utilisateurs pourront appartenir à des groupes mais j'aimerai aussi leur offrir la possibilité d'avoir des tags sur leur profils.

Des tags sur lesquels on pourrait ensuite cliquer pour avoir une liste complète des utilisateurs ayant le même tag.

La taxonomy de base n'est pas la solution car ne fonctionne pas avec les profils (dans le sens qu'il est possible d'avoir les tags, mais si on clic dessus, Drupal affiche uniquement les nodes associés, mais pas les utilisateurs).

J'ai trouvé certains modules qui règle ce problème, mais uniquement pour Drupal 6.

Donc, je comprends que pour Drupal 7, il faut prendre le problème autrement...

Avez-vous des idées ?

Version de Drupal : 

Es tu un peu développeur?
Je n'ai jamais eu besoin de faire ça mais voilà comment je résoudrais ceci:

User est une entité, on peut donc lui attacher des champs comme n'importe quel node. (dans /admin/config/people/accounts/fields)
Je lui ajouterais donc un champ 'Tag' de type text ou les utilisateurs pourraient lister leurs tags

Puis, dans un module custom:
Avec le Hook_form alter j'altererais les form_id user_profile_form et user_register_form pour l'afficher comme je le souhaite dans les formulaires d'inscriptions

Pour faire les recherches j'utiliserai Entity_field_query, Ex:

<?php
// Initialize EntityFieldQuery
 
$entity_type = 'user';
 
$efq = new EntityFieldQuery();
 
$efq->entityCondition('entity_type', $entity_type);
 

// Query condition Using LIKE wildcard
 
$efq->fieldCondition('tag', "%".$form_state['values']['field_tag']."%","LIKE"); 
 

// Execute query and collect results
 
$result = $efq->execute(); 
?>

Il y à peut être des solutions plus simples, mais cela devrais fonctionner. Il te faudra tout de même de bonnes connaissances sur l'API de Drupal mais cela s'apprend

Sinon un module déjà tout fait, mais je n'en connais pas (je n'ai pas vraiment cherché)
Bonne chance

Bonjour et merci pour ces informations.

Je ne suis pas développeur mais je crois comprendre ce que tu écris :-)

Depuis, j'ai appréhendé les choses autrement et vais donc me passer de mettre les mains dans le cambouis.