หากมีสองโมดูล A และ B และทั้งสองมี user_login hook เดียวกัน ดังนั้นเมื่อฉันเข้าสู่ระบบออกจาก A_user_login () และ B_user_login () ฟังก์ชั่นที่หนึ่งเรียกว่า first.and วิธี drupal ตัดสินใจสั่งการดำเนินการของทั้งสองฟังก์ชั่น
หากมีสองโมดูล A และ B และทั้งสองมี user_login hook เดียวกัน ดังนั้นเมื่อฉันเข้าสู่ระบบออกจาก A_user_login () และ B_user_login () ฟังก์ชั่นที่หนึ่งเรียกว่า first.and วิธี drupal ตัดสินใจสั่งการดำเนินการของทั้งสองฟังก์ชั่น
คำตอบ:
ตะขอถูกเรียกตามลำดับ
{system.weight}
น้ำหนักซึ่งถูกกำหนดต่อโมดูลในฐานข้อมูลเป็นน้ำหนักที่ลดลงมาก่อนหน้านี้ในกระบวนการโทรตามค่าเริ่มต้นโมดูลจะกำหนดน้ำหนักเป็น 0 ดังนั้นตะขอเกือบทั้งหมดในระบบจะทำงานตามลำดับตัวอักษร บางโมดูลจะปรับสิ่งนี้ใน hooks การติดตั้งเพื่อให้ทำงานได้เร็วขึ้นหรือช้าลงในmodule_invoke_all
ฟังก์ชั่น
ดูเพิ่มเติม: การปรับน้ำหนักโมดูล: อะไรคือความเสี่ยงและสิ่งที่ต้องระวัง
โดยค่าเริ่มต้นน้ำหนักของโมดูลจะกำหนดสถานที่ในบรรทัดเพื่อดำเนินการฟังก์ชัน 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;
}
}
hook_module_implements_alter()
มี