s'il y a deux modules A et B et que les deux ont le même hook user_login. donc quand je me connecte. hors des fonctions A_user_login () et B_user_login () que l'on a appelé first.and comment drupal décide de l'ordre d'exécution de ces deux fonctions
Les crochets sont appelés par ordre de
{system.weight}
. Les poids inférieurs arrivent plus tôt dans le processus d'appel.Par défaut, les modules reçoivent un poids de 0, donc presque tous les hooks du système s'exécutent par ordre alphabétique. Certains modules ajusteront cela dans leurs crochets d'installation afin qu'ils s'exécutent plus tôt ou plus tard dans le module_invoke_all
fonction.
Voir aussi: Ajuster le poids du module: quels sont les risques et les choses à surveiller?
Par défaut, le poids d'un module définit sa place en ligne pour exécuter une fonction hook_ *.
Vous pouvez modifier l'ordre par défaut des modules d'implémentation avec hook_module_implements_alter . Un petit exemple peut être trouvé dans la lecture approfondie de ce tutoriel de blog .
À partir de ce billet de blog, un exemple d'implémentation est:
function mymodule_module_implements_alter(&$module_list, $context){
if($context === "node_insert"){
$temp = $module_list['mymodule'];
// Removing the mymodule key/value
unset($module_list['mymodule']);
// Adding the mymodule key value as the last member in the list
$module_list['mymodule'] = $temp;
}
}