【问题标题】:Set Drupal Module Weight设置 Drupal 模块权重
【发布时间】:2011-01-12 16:37:32
【问题描述】:

在开发自定义模块时,设置模块权重的正确方法是什么?

【问题讨论】:

    标签: drupal drupal-modules


    【解决方案1】:

    这是在 Drupal 7 中正确的做法

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

    【讨论】:

    • 应该放在your_module.install文件中。
    【解决方案2】:

    标准方法是在安装钩子的查询中进行。

    来自开发模块:

    /**
     * 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'");
    
      ...
    }
    

    【讨论】:

    • 这看起来是正确的,但是否只需要调用 drupal_install_schema() 来设置权重?
    • 您也可以手动设置权重... drupal_install_schema() 调用在那里,因为 devel 的安装挂钩需要安装其架构。
    • 请注意,设置权重并不总是您需要做的。在我遇到的某些情况下,还需要设置“引导程序”,并且在“标准”模块之前加载重量较轻但带有“引导程序”的模块 - 考虑到这一点......
    • 查看我对 Drupal 7 版本的回答。
    【解决方案3】:

    如果由于某种原因您必须将其粘贴在更新挂钩中,您将希望从 update_sql 正确返回结果,以免出现看起来令人讨厌的无害错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多