Modifier l'affichage de l'administration des utilisateurs

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 souhaiterais modifier l'affichage de la page d'administration des utilisateurs en rajoutant l'email sous le username.

Comme j'essaie de prendre de bonnes habitudes en ne touchant plus aux modules dont je ne suis pas "propriétaire". J'aimerais savoir quelle est la meilleure marche à suivre pour mettre à jour cette affichage.

Dans mes bidouilleries, je touchais à user_admin_account(). J'ai pensé me créer un module qui contiendrait toutes mes modifications à d'autres modules, mais comment être certain qu'il sera bien appelé après les autres?

Merci d'avance pour vos pistes de réflexions.

Fichier attachéTaille
Icône image ScreenHunter_03 Mar. 01 10.58.jpg17.63 Ko
Forum : 
Version de Drupal : 

Hello Christophe,

J'imagine que ta capture d'écran correspond au résultat de tes "bidouilleries". En tout cas, tu es arrivé au résultat souhaité.

Déjà, toute fonction de Drupal n'est pas "hookable". Drupal utilise abondamment le fait qu'il suffise qu'une fonction soit nommée d'une certaine façon pour qu'elle soit appelée automatiquement à un moment précis. C'est le principe des "hooks".

Dans ton cas, user_admin_account() n'est pas un hook. Il n'y a donc aucun moyen "automatique" d'exécuter ton code à la place de ou en plus de cette fonction.

Je vois plusieurs solutions propres à ton problème :

  • La page dont tu parles est un formulaire. La façon Drupal de modifier un formulaire -- n'importe quel formulaire -- c'est d'utiliser le hook_form_alter(). Tu pourrais donc créer un module qui implémente ce hook.

  • Tu pourrais aussi oublier cette page d'administration et recréer ta propre page. En créant une vue (module Views) de type "utilisateur", et en y ajoutant le module VBO pour mettre une checkbox sur chaque ligne de la vue et une liste déroulante d'actions en haut de la vue, tu serais déjà très proche du but.

  • Enfin, tu pourrais t'arranger pour que le chemin de cette page d'administration -- admin/user/user -- pointe vers ta propre fonction plutôt que vers une fonction Drupal. Par défaut, ce chemin pointe vers la fonction user_admin() qui appelle à son tour la fonction user_admin_account(), que tu bidouilles. Pourquoi ne pas associer ce chemin à ta propre fonction (qui serait dans un module à toi) grâce au hook_menu_alter() ? (RAPPEL : l'association entre un chemin et la fonction PHP qui génère la page affichée à ce chemin est définie dans le hook_menu() et peut être modifiée dans le hook_menu_alter().) La fonction que tu appellerais serait une copie de la fonction Drupal originale, mais adaptée à tes besoins.

La solution que tu choisis dépend de ta préférence pour une solution 100% code VS. une solution basée sur des modules. Personnellement, j'utiliserais la première solution, car c'est la plus facile à mettre en oeuvre (pour un développeur) et la plus efficace.

Bonjour et merci,

J'ai moi aussi été amené à modifier la liste des utilisateurs... J'ai choisi la troisième solution : création d'un module avec :
- hook_form_alter()
- une fonction user_admin() customisée
- une fonctioon user_admin_account() customisée.

ça semble bien fonctionner...