Catégories:
Bonjour à tous
Pour le besoin d’un projet, j’ai modifié le module Taxonomy présent par défaut dans Drupal 7 de façon à ce que la page d’un terme liste également les noeuds liés aux termes enfants du terme sélectionné.
Le problème est que la prochaine mise à jour du core va faire disparaitre ma modification.
Savez-vous s’il y a une méthode prévue pour pouvoir modifier des éléments du core sans que ces modifications ne soient affectées par les mises à jour (peut-être par rapport au thème ou encore en redéfinissant le module dans Sites) ?
Merci d’avance
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

c’est plus qu’un problème, c’est une grosse erreur. Ne modifie en aucun cas le core sauf si tu as une parfaite maîtrise du fonctionnement interne de Drupal :
1/ Tu vas effectivement soit perdre tes modifs, soit ne pas pouvoir mettre à jour ton site.
2/ Tu peux penser qu’une modification est bénigne mais n’ayant pas d’idée sur l’usage que fait le core du module que tu hacks, tu vas devoir gérer des effets de bords dont tu pourras difficilement trouver la source.
3/ Tu peux assez facilement déstabiliser la sécurité même de ton site en croyant bien faire.
Lorsqu’un module ne te convient pas :
1/ vérifie qu’il ne contient pas de templates (.tpl.php) que tu pourrais recopier dans ton thème et modifier en toute sécurité. Par exemple si le module block ne rend pas les blocks comme tu le veux, tu copies le fichier modules/block/block.tpl.php dans ton thème et tu le changes.
2/ regarde d’une manière plus générale l’implémentation du hook_theme (ici ce sera taxonomy_theme) du module pour voir s’il n’y a pas des fonctions de thèmes que tu peux surcharger dans le template.php de ton thème. Par exemple si tu n’aimes pas le «(non validé)» que Drupal colle après chaque nom d’utilisateur non autentifié, tu recopies dans ton template.php la fonction theme_username renommée en mon_theme_username et tu changes le résultat.
3/ Tu peux aussi modifier les données envoyées à un template ou à une fonction de thème en créant dans ton template.php un «mon_theme_preprocess_XXX(&$variables)». $variables contenant toutes les données utilisable dans un template tu peux par exemple créer un mon_theme_preprocess_node pour modifier les données d’un noeud en fonction par exemple d’un teaser ou d’un pleine page.
4/ Tu peux regarder dans le module tous les appels à une fonction «module_invoke» ou «module_invoke_all» ou «drupal_alter». Cela te donne une liste de «hooks» que tu peux implémenter dans ton propre module. Par exemple si le formulaire d’un module ne te plais pas, tu vas implémenter un «mon_module_form_alter» qui va modifier la structure de ce formulaire.
5/ Enfin, si rien n’aide à obtenir un résultat satisfaisant, tu peux aussi créer un module, y mettre une implémentation de hook_menu_alter pour «écraser» une URL d’un module existant et lui associer une fonction PHP propre à ton module qui renverra les bons résulats. Ici aussi pour exemple tu peux recopier la callback de ton module d’origine histoire d’avoir un code de dépard.
Comme tu le vois il y a de très très très nombreuses possibilités à explorer avant de céder à la facilité de modifier un module core. Cela ne veut pas dire que ça n’arrive jamais (j’ai perso un dizaines de patch à Drupal 6 dont je ne peux me passer) mais les 5 techniques données plus haut permettent d’éviter 90% des hack de core.
Yoran - arNuméral
Yoran
1039
Merci pour toutes ces infos.
Je vais remettre le fichier de départ et tenter de trouver une solution plus propre.
NiKo2b
15