як drupal вирішує порядок виконання одного і того ж гака в різних модулях?


22

якщо є два модулі A і B і обидва мають однаковий гачок user_login. тому коли я входжу з системи A_user_login () та B_user_login (), яку викликав перший.і як друпал вирішує порядок виконання цих двох функцій

Відповіді:


31

Гачки називаються в порядку

  1. Вага, який визначається для кожного модуля в базі даних як {system.weight}. Нижчі ваги приходять раніше в процесі виклику.
  2. За алфавітом, за назвою модуля

За замовчуванням модулям присвоюється вага 0, тому майже всі гачки в системі працюють в алфавітному порядку. Деякі модулі відрегулюють це в гачках встановлення, щоб вони працювали раніше чи пізніше у module_invoke_allфункції.

Дивіться також: Регулювання ваги модуля: на які ризики та на що слід звернути увагу?


3
Примітка у D7 є hook_module_implements_alter().
Енді

11

За замовчуванням вага модулів визначає його місце в рядку, щоб виконати функцію гачка_ *.

Ви можете змінити впорядкування модулів, що реалізуються за замовчуванням, за допомогою гачка_модуль_імплементації_алтера . Невеликий приклад можна знайти в подальшому читанні цього навчального посібника .

Приклад із реалізації цього блогу:

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;
 }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.