como drupal decide a ordem de execução do mesmo gancho em diferentes módulos?


22

se houver dois módulos A e B e ambos tiverem o mesmo gancho user_login. Então, quando eu entro. Fora das funções A_user_login () e B_user_login () que foram chamadas primeiro. e como drupal decide a ordem de execução dessas duas funções

Respostas:


31

Os ganchos são chamados na ordem de

  1. Peso, que é definido por módulo no banco de dados como {system.weight}. Pesos mais baixos vêm mais cedo no processo de chamada.
  2. Alfabético, pelo nome do módulo.

Por padrão, os módulos recebem um peso 0, então quase todos os ganchos do sistema são executados em ordem alfabética. Alguns módulos ajustam isso em seus ganchos de instalação para que sejam executados mais cedo ou mais tarde na module_invoke_allfunção.

Consulte também: Ajustando o peso do módulo: quais são os riscos e as coisas a serem observadas?



11

Por padrão, o peso de um módulo define seu lugar na linha para executar uma função hook_ *.

Você pode alterar a ordem padrão dos módulos de implementação com hook_module_implements_alter . Um pequeno exemplo pode ser encontrado em outras leituras deste tutorial do blog .

A partir dessa publicação do blog, um exemplo de implementação é:

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;
 }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.