2011-01-12 2 views

ответ

19

Стандартный способ - сделать это в запросе в установочном крюке.

От модуля разви:

/** 
* 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