2011-01-12 84 views

回答

19

標準方法是在安裝鉤子的查詢中執行此操作。

從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

正確的方式這看起來正確的,但就是調用drupal_install_schema()來設置權重只是需要? – markdorison

+1

你也可以手動設置權重...... drupal_install_schema()調用在那裏,因爲devel的安裝鉤子需要安裝它的模式。 –

+0

考慮到設置重量並不總是你需要做的。在某些情況下,我遇到了,設置「引導程序」也是必需的,重量較輕但帶有「引導程序」的模塊在「標準」模塊之前加載 - 考慮到這一點... – Shushu

4

如果由於某種原因,你必須堅持它在更新鉤,你會想正確地從update_sql返回結果,免得你討厭看的無害的錯誤。

function mymodule_update_6000(&$sandbox) { 
    $res[] = update_sql("UPDATE {system} SET weight = 1 WHERE name = 'mymodule'"); 
    return $res; 
} 
25

這是做在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

應放置在your_module.install文件中。 – duru