как drupal решает порядок выполнения одного и того же крючка в разных модулях?

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

21 голос | спросил GiLL 21 J000000Saturday12 2012, 07:52:22

2 ответа


30

Крючки вызывают в порядке

  1. Вес, определенный для каждого модуля в базе данных как {system.weight}. Более низкие веса приходят ранее в процессе вызова.
  2. По алфавиту, по имени модуля.

По умолчанию модулям присваивается вес 0, поэтому почти все крючки в системе выполняются в алфавитном порядке. Некоторые модули будут корректировать это в своих установках, чтобы они выполнялись раньше или позже в module_invoke_all .

См. также: Регулировка веса модуля: какие риски и что нужно искать?

ответил mpdonadio 21 J000000Saturday12 2012, 16:56:11
9

По умолчанию вес модулей определяет свое место в строке для выполнения функции hook_ *.

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

Из этого сообщения в блоге пример реализации:

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;
 }
}
ответил tenken 21 J000000Saturday12 2012, 08:25:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132