通过.install文件阻止启用/禁用模块

时间:2012-06-21 00:09:14

标签: drupal drupal-6 drupal-hooks

我编写了一个模块,该模块依赖于settings.php中$ conf中的重写值。具体来说,它是$ conf [session_inc]

中设置的自定义会话处理程序

需要存在此覆盖才能使模块正常工作,并且在禁用/卸载模块时肯定不需要存在。

无论如何都要从.install文件中停止启用/禁用进程?我需要强制用户在这些操作之前正确配置settings.php。启用/禁用挂钩的返回值显然被忽略。

我需要阻止用户在他们的座位上锯掉分支机构:)

2 个答案:

答案 0 :(得分:1)

以下是根据设置文件中的某些变量阻止模块启用的示例:

/**
 * Implements requirements().
 */
function hook_devel_requirements($phase) {
  $requirements = array();
  // Ensure translations don't break at install time
  $t = get_t();

  if ($phase == 'install') {
    global $conf;
    if ($conf["my_environment"] == 'live') {
      $requirements['mymodule'] = array(
        'title' => $t('Custom Devel'),
        'value' => $t('This module should not be enabled on Production, sorry!'),
        'severity' => REQUIREMENT_ERROR,
      );
    }
  }
  return $requirements;
}

它正在寻找设置文件中定义的全局$conf['my_environment']变量。如果它被设置为'live',它将阻止模块被启用。

请务必将hookmymodule更改为相应的模块名称。代码应该在.install文件中使用。

答案 1 :(得分:0)

您可以实施hook_requirements()以在初始安装(install)之前和状态检查(runtime)期间要求设置。

.install文件中似乎无法阻止您的模块被禁用。或许,您可以在会话处理程序中检查module_exists()并在模块被禁用时路由回默认处理程序?