2010-08-20 10 views
7

Se si dispone di due moduli, ognuno ha implementato il proprio hook preprocess_node. Allora quale sarà chiamato per primo? C'è comunque un modo per far rispettare l'ordine in cui verrebbe chiamato?hook_preprocess_node() ordine di esecuzione

module1_preprocess_node(&$vars){ 
    $vars['submitted'] = "test1"; 
} 

module2_preprocess_node(&$vars){ 
    $vars['submitted'] = "test2"; 
} 

Mi chiedo quale sarebbe il risultato ... test1 o test2. Grazie in anticipo

risposta

13

Tutti i ganci in Drupal vengono sparati in ordine di peso modulo. Per impostazione predefinita, tutti i moduli hanno un peso pari a zero, quindi se si desidera controllare l'ordine esatto in cui vengono attivati, è necessario modificare qualcosa nel database.

How to Update a Module's Weight

Se si guarda la documentazione API per module_list(), cravatte rompere in ordine alfabetico del nome del file .module.

+1

+1 per collegamento per aggiornare il peso del modulo –

2

Se i moduli non hanno cambiato il loro peso nella tabella system, il risultato sarà test2.

Il primo modulo invocato è quello con un peso minore; quando due moduli hanno lo stesso peso, vengono ordinati in ordine alfabetico crescente. Questo è valido per ogni hook richiamato.

Problemi correlati