9
votes

Comment prolonger un module contribué à Drupal?

Comment puis-je prolonger un module existant sans le modifier? En fait, c'est un module contribué, donc je ne veux pas le pirater. Mais je veux modifier et ajouter certaines fonctionnalités à elle. Je suis nouveau à Drupal et comme je lisais des tutoriels à ce sujet, je continue d'entendre une chose encore et encore - ne pas pirater le noyau ... et je crois que la même chose s'applique aussi aux modules.


2 commentaires

Besoin de plus d'informations. Quel module? Que voulez-vous faire?


Si vous spécifiez le module, vous pouvez obtenir des conseils sur la personnalisation de ce module spécifique. Les modules drupes ne sont pas si standardisés qu'une solution de personnalisation convient à tous.


5 Réponses :


2
votes

Quel module est-ce? Certains modules fournissent des API que vous pouvez étendre en écrivant un module de votre choix. Il y a tonnes de modules qui "étendre" les vues en s'appuyant sur les vues API . Si le module que vous souhaitez étendre n'a pas de bonne API, vous pouvez toujours la fourrer pour faire une version qui répond à vos besoins. Peut-être que cela aidera quelqu'un d'autre aussi.


0 commentaires

7
votes

Évitez de pirater ou de fourrer le module si possible. Le piratage du module vous donne une plus grande variété de la douleur "Core du piratage" et à la recherche du module (sans une architecture et un ensemble d'architecture et de fonctionnalité distinctement supérieures.) Juste des boudonnes L'eau du module, ce qui rend encore plus difficile les constructeurs de sites de faire une décision efficace. sur quoi utiliser.

Les meilleures solutions sont:
  1. Utilisez toute API fournie par le module. Parfois, il existe des fonctions que vous pouvez utiliser comme appels d'API qui ne sont pas nécessairement destinés ainsi.
  2. Créez la fonctionnalité supplémentaire et soumettez un correctif à la file d'attente du numéro du module, de sorte que d'autres peuvent bénéficier de votre travail, afin de pouvoir bénéficier d'audits de sécurité sans trop de sueur.
  3. Pas toujours, mais souvent, vous pouvez aller de loin créer un module personnalisé implémentant Hook_Form_alter et ajoute un gestionnaire de soumission qui ramène à votre module de traitement.


0 commentaires

1
votes

Pour changer le formulaire affiché par le module, vous pouvez simplement créer un module implémentant harok_form_alter () ou Hook_Form_Form_Id_alter () . La plupart du temps, lorsque vous souhaitez modifier le comportement d'un module, vous devez également modifier le formulaire de paramètres utilisée (ou tout autre formulaire).


0 commentaires

1
votes

Même si nous devons utiliser certaines fonctionnalités, nous pouvons le faire de la manière suivante. Nous devons copier la fonction du module et nous pouvons lancer la fonction dans votre fichier template.php. Que vous pouvez faire des chanages sur cette fonction en conséquence.


0 commentaires

7
votes

a trouvé un très bon publier à propos de l'extension d'un module à Drupal. Pièces essentielles:

  • Si le module utilise le code d'un rappel de page que vous souhaitez modifier, modifiez le rappel de la page avec Hook_Menu_alter ().

  • Si le module implémente une fonction de thème que vous souhaitez modifier, modifiez la fonction associée à Hook_theme_registry_alter (). En alternative, s'il suffit de changer les variables, la fonction thème obtient, vous pouvez alors mettre en œuvre la fonction de préprocession pour cette fonction de thème (p. Ex. Hook_preprocess_rdf_metadata () pour theme_rdf_metadata () et modifier les variables que la fonction thème obtiendra.

  • Si le module exécute une requête SQL à l'aide de db_select () et attribue une étiquette à la requête, modifiez la requête exécutée avec Hook_Query_alter ().

  • Si le module implémente un crochet, vous ne voulez pas qu'il soit exécuté, vous pouvez implémenter Hook_Module_implexs_alter () pour éviter qu'il est exécuté.

  • Si le module implémente un crochet alternatif (par exemple, Hook_Page_alter ()), et vous souhaitez modifier ce que ce crochet altéré, implémentez le même crochet altéré, en étant sûr qu'il est exécuté après celui implémenté de ce module. < / p>

    Dans le cas, la fonction que vous souhaitez modifier n'est pas un crochet, puis:

    • Vérifiez que la fonction utilise des crochets implémenté à partir d'un autre module. Par exemple, node_save () invoque harok_node_presave (); Si je voudrais changer la propriété "modifiée" du nœud, je ne tiens pas nœud_save (), mais je préfère mettre en œuvre harok_node_presave () pour le modifier.

    • Vérifiez que la fonction est référencée / utilisée à partir d'un crochet; Dans ce cas, vous pouvez faire quelque chose pour ce crochet, comme je l'ai déjà décrit précédemment.

      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 la créer. J'essaierais également de demander une demande de fonctionnalité pour le module existant, en espérant que la fonctionnalité est mise en œuvre. Le piratage d'un module tiers n'est jamais une bonne idée, notamment parce que les mises à jour automatiques du module (via le gestionnaire de mise à jour ou le rhumin) ne seraient plus possibles pour ce module.


0 commentaires