Установка веса модуля Drupal

При разработке настраиваемого модуля, какой правильный способ установить вес модуля?

Ответ 1

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

Из модуля 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'");

  ...
}

Ответ 2

Это правильный способ сделать это в Drupal 7

/**
 * Implements hook_enable()
 */
function YOUR_MODULE_enable() {
    db_update('system')
    ->fields(array('weight' => 1))
    ->condition('type', 'module')
    ->condition('name', 'YOUR_MODULE')
    ->execute();
}

Ответ 3

если по какой-то причине вы должны вставить его в крючок обновления, вам нужно будет правильно вернуть результат из update_sql, чтобы не получить неприятные безобидные ошибки.

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