Làm thế nào drupal quyết định thứ tự thực hiện của cùng một hook trong các mô-đun khác nhau?


22

nếu có hai mô-đun A và B và cả hai đều có cùng một hook user_login. vì vậy khi tôi đăng nhập

Câu trả lời:


31

Móc được gọi theo thứ tự

  1. Trọng lượng, được xác định cho mỗi mô-đun trong cơ sở dữ liệu là {system.weight}. Trọng lượng thấp hơn đến sớm hơn trong quá trình gọi.
  2. Bảng chữ cái, theo tên mô-đun.

Theo mặc định, các mô-đun được gán trọng số 0, do đó, gần như tất cả các móc trong hệ thống chạy theo thứ tự bảng chữ cái. Một số mô-đun sẽ điều chỉnh điều này trong các móc cài đặt để chúng chạy sớm hơn hoặc muộn hơn trong module_invoke_allchức năng.

Xem thêm: Điều chỉnh trọng lượng mô-đun: những rủi ro và điều cần chú ý là gì?


3
Lưu ý trong D7 có hook_module_implements_alter().
Andy

11

Theo mặc định, trọng lượng mô-đun xác định vị trí của nó trong dòng để thực thi hàm hook_ *.

Bạn có thể thay đổi thứ tự mặc định của các mô-đun triển khai bằng hook_module_implements_alter . Một ví dụ nhỏ có thể được tìm thấy trong bài đọc thêm của hướng dẫn blog này .

Từ blog đó, một ví dụ thực hiện là:

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;
 }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.