De temps en temps, j'ai besoin de pirater un module contribué pour ajouter un peu de fonctionnalités nécessaires, généralement quelque chose de spécifique au projet que les responsables du module ne voudraient probablement pas utiliser.
Actuellement, je crée un fichier de patch pour chaque hack, et je stocke tous ces fichiers de patch dans sites/all/modules. De cette façon, chaque fois que je mets à jour un module, je peux facilement réappliquer mes hacks et résoudre tout conflit.
Je ne peux pas m'empêcher de penser que je fais quelque chose de mal. Suis-je?
Un correctif ne s'applique pas nécessairement à une nouvelle version d'un module: il suffit que la fonction corrigée soit déplacée vers une ligne différente, ou que le code de cette fonction soit modifié, et le correctif ne s'applique plus. Pour que la fonction soit déplacée vers une ligne différente, il suffit qu'une autre fonction soit réécrite pour prendre plus de lignes (ou moins de lignes).
Une meilleure façon de modifier le comportement d'un module est, pour Drupal 7:
hook_preprocess_rdf_metadata()
pour theme_rdf_metadata () , et changer les variables que la fonction de thème obtiendra.Dans le cas où la fonction que vous souhaitez modifier n'est pas un crochet, alors:
node_save()
, mais j'implémente plutôt hook_node_presave()
pour la modifier.Si quelque chose que j'ai dit jusqu'à présent ne s'applique pas, il est préférable de créer un module personnalisé et d'utiliser le code de l'autre module pour le créer. J'essaierais également de demander une demande de fonctionnalité pour le module existant, en espérant que la fonctionnalité soit implémentée.
Le piratage d'un module tiers n'est jamais une bonne idée, surtout parce que les mises à jour automatiques du module (via le gestionnaire de mise à jour ou Drush) ne seraient plus possibles pour ce module.
La plupart des modules sont livrés avec des crochets pour remplacer la plupart des fonctionnalités du module et des fonctions de thème pour contourner les thèmes. Vous devriez essayer de l'utiliser dans la plupart des cas. Et éviter de pirater le code lui-même.
Si vous êtes absolument sûr que ce que vous voulez réaliser n'est pas quelque chose qui peut être fait avec les remplacements, l'option suivante que je choisirais est de créer une copie du module et de lui donner un autre nom et même de supprimer les fonctions que je vraiment pas besoin de créer de nouveaux modules.
Si les changements sont très peu nombreux, je ne vois aucun inconvénient à changer le code lui-même, mais je dois garder une trace des changements pour le faire fonctionner à nouveau après une mise à niveau, ce que je suppose que vous faites déjà.
Oui, OMI, vous "faites mal les choses", mais peut-être que les exigences de votre projet sont juste inférieures à mes exigences moyennes de projet :) Mettez tous vos correctifs et versions de module dans un fichier drush make afin que vous puissiez toujours construire votre plate-forme avec drush si il se passe quelque chose.
http://drupal.org/project/drush_make
Créer des fichiers est très simple à écrire une fois que vous connaissez la syntaxe.