Submitted by Vangoce on
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 |
---|---|
![]() | 17.63 Ko |
Hello Christophe, J’imagine
Permalien Soumis par drupalfrance le 1 Mars, 2011 - 17:42
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 fonctionuser_admin()
qui appelle à son tour la fonctionuser_admin_account()
, que tu bidouilles. Pourquoi ne pas associer ce chemin à ta propre fonction (qui serait dans un module à toi) grâce auhook_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 lehook_menu()
et peut être modifiée dans lehook_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.
Et bien, je vais donc laisser
Permalien Soumis par Vangoce le 2 Mars, 2011 - 09:38
Et bien, je vais donc laisser parler l'expérience et la maîtrise pour suivre ton conseil et partir sur ta première solution.
Merci beaucoup pour ta réponse très instructive.
Bonjour et merci, J’ai moi
Permalien Soumis par AlexisR le 25 Novembre, 2011 - 13:06
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...