Xoops中获取模块配置参数的方法。

Xoops群(53219504,17380705)中有人询问在开发的时候,怎样获取在xoops_version.php中添加的参数值。其实Xoops中统一管理模块的参数是非常好的一种做法(将在下一个平台性项目中借鉴这个做法),获取的方法也非常简单,针对不同的情况可以分别实现如下:

1、更改现有模块代码,且现有模块代码中包含了全局性变量$xoopsModuleConfig的情况

这种情况比较简单:

global $xoopsModuleConfig;
$configvalue=$xoopsModuleConfig["xxxx"];
//xxxx为xoops_vesion.php中定义的参数对应名称

2、现有模块代码中不包含$xoopsModuleConfig或者自行开发简单模块且不使用Framework

$module_handler = &xoops_gethandler('module');//获取module句柄$module_handler
$module = $module_handler->getByDirname("xxx");//xxx为模块目录名称,获取特定module操作句柄$module
$config_handler = &xoops_gethandler('config');//获取config的句柄$config_handler
$criteria = new CriteriaCompo(new Criteria('conf_modid', $module->getVar('mid')));
// 根据上述module的id构建查询参数$criteria
$configs =& $config_handler->getConfigs($criteria);//用config句柄获得特定module的参数配置结果集

foreach(array_keys($configs) as $i)
{
$moduleConfig[$configs[$i]->getVar('conf_name')] = $configs[$i]->getConfValueForOutput();//转化成数组
}
unset($configs);

之后直接使用$moduleConfig[‘xxxx’]就可以访问了,也可以把$moduleConfig设置为全局变量。

3、使用Framework的模块

load_functions("config");
$moduleConfig = mod_loadConfg("moduledirname");

使用Framework的情况可以参考article中代码。