2011-01-12 19 views

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'"); 

    ... 
} 
+1

Questo sembra corretto, ma è la chiamata a drupal_install_schema() necessaria solo per impostare il peso? – markdorison

+1

È anche possibile impostare il peso manualmente ... la chiamata drupal_install_schema() esiste perché l'hook di installazione di devel deve installare il suo schema. –

+0

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

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

Problemi correlati