Quando si sviluppa un modulo personalizzato, qual è il modo corretto di impostare il peso di un modulo?Imposta il peso del modulo Drupal
11
A
risposta
19
Il modo standard è di farlo in una query nel hook di installazione.
Dal modulo devel:
/**
* Implementation of hook_install()
*/
function devel_install() {
drupal_install_schema('devel');
// New module weights in core: put devel as the very last in the chain.
db_query("UPDATE {system} SET weight = 88 WHERE name = 'devel'");
...
}
4
se per qualche motivo è necessario attenersi in un gancio di aggiornamento, si vuole tornare correttamente il risultato da update_sql, affinché non si ottiene errori innocui brutto-looking.
function mymodule_update_6000(&$sandbox) {
$res[] = update_sql("UPDATE {system} SET weight = 1 WHERE name = 'mymodule'");
return $res;
}
25
Questo è il modo corretto per farlo in Drupal 7
/**
* Implements hook_enable()
*/
function YOUR_MODULE_enable() {
db_update('system')
->fields(array('weight' => 1))
->condition('type', 'module')
->condition('name', 'YOUR_MODULE')
->execute();
}
+0
Dovrebbe essere inserito nel file your_module.install. – duru
Questo sembra corretto, ma è la chiamata a drupal_install_schema() necessaria solo per impostare il peso? – markdorison
È anche possibile impostare il peso manualmente ... la chiamata drupal_install_schema() esiste perché l'hook di installazione di devel deve installare il suo schema. –
Prendi in considerazione che l'impostazione del peso non è sempre tutto ciò che devi fare. In alcuni casi, è stato necessario impostare anche il "bootstrap" e i moduli con peso inferiore ma con "bootstrap" sono caricati prima dei moduli "standard" - tenerlo in considerazione ... – Shushu