drupal farklı modüllerde aynı kancanın uygulama sırasına nasıl karar verdi?


22

İki A ve B modülü varsa ve her ikisi de aynı user_login kancasına sahipse. bu yüzden ilk çağırılan A_user_login () ve B_user_login () işlevinden giriş yaptığımda, bu iki işlevin yürütme sırasına nasıl drupal karar verdiğine

Yanıtlar:


31

Kancalar sırasıyla

  1. Veritabanındaki modül başına tanımlanan ağırlık {system.weight}. Arama işleminde daha düşük ağırlıklar daha erken gelir.
  2. Modül adına göre alfabetik.

Varsayılan olarak, modüllere 0 ağırlık verilir, bu nedenle sistemdeki neredeyse tüm kancalar alfabetik sırayla çalışır. Bazı modüller kurulum kancalarında bunu ayarlayarak, module_invoke_allfonksiyonlarında daha erken veya daha sonra çalışabilmelerini sağlar.

Ayrıca bakınız: Modül ağırlığını ayarlama : Dikkat edilmesi gereken riskler ve şeyler nelerdir?



11

Varsayılan olarak bir modül ağırlığı, bir hook_ * işlevini yerine getirmek için sıradaki yerini tanımlar.

Kanca_module_implements_alter ile uygulama modüllerinin varsayılan sırasını değiştirebilirsiniz . Bu blog eğitimini daha fazla okumak için küçük bir örnek bulunabilir .

Bu blog gönderisinden örnek bir uygulama:

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;
 }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.