2011-01-12 14 views

Odpowiedz

19

Standardowy sposób to zrobić w zapytaniu w haku instalacyjnym.

Z modułu 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

To wygląda poprawnie, ale jest wywołanie drupal_install_schema() są wymagane tylko, aby ustawić wagę? – markdorison

+1

Można również ustawić wagę ręcznie ... wywołanie drupal_install_schema() jest tam, ponieważ instalacyjny hook devela musi zainstalować jego schemat. –

+0

Weź pod uwagę, że ustawienie wagi nie zawsze jest wszystkim, co musisz zrobić. W niektórych przypadkach spotkałem się z koniecznością ustawienia "bootstrapu", a moduły o niższej wadze, ale z "bootstrapiem", załadowano przed "standardowymi" modułami - weź pod uwagę ... – Shushu

4

jeśli z jakiegoś powodu trzeba trzymać go w haku aktualizacji, będziemy chcieli, aby prawidłowo zwraca wynik z update_sql, żeby dostać nieprzyjemnych prognozujące błędy nieszkodliwe.

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

Jest to poprawny sposób to zrobić w 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

Powinien być umieszczony w pliku twoj_module.install. – duru