我编写了一个模块,该模块依赖于 settings.php 中 $conf 中的覆盖值。具体来说,它是在 $conf[session_inc] 中设置的自定义会话处理程序
此覆盖需要存在才能使模块工作,并且在禁用/卸载模块时绝对不需要存在。
有没有办法从 .install 文件中停止启用/禁用过程?我需要强制用户在这些操作之前正确配置 settings.php。启用/禁用挂钩的返回值显然被忽略了。
我需要防止用户锯掉他们坐在的树枝:)
我编写了一个模块,该模块依赖于 settings.php 中 $conf 中的覆盖值。具体来说,它是在 $conf[session_inc] 中设置的自定义会话处理程序
此覆盖需要存在才能使模块工作,并且在禁用/卸载模块时绝对不需要存在。
有没有办法从 .install 文件中停止启用/禁用过程?我需要强制用户在这些操作之前正确配置 settings.php。启用/禁用挂钩的返回值显然被忽略了。
我需要防止用户锯掉他们坐在的树枝:)
这是一些基于设置文件中的某些变量来防止启用模块的示例:
/**
* 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”,它会阻止模块被启用。
请记住更改hook
并更改mymodule
为您适当的模块名称。该代码应在.install
文件中使用。
您可以在初始安装之前 ( ) 和状态检查期间( ) 实施hook_requirements()
要求设置。install
runtime
在 .install 文件中似乎无法防止您的模块被禁用。也许,相反,module_exists()
如果您的模块被禁用,您可以在会话处理程序中检查并路由回默认处理程序?