我想获取一个未分配给当前页面的模块的参数。帮助类JModuleHelper有一个getModule方法,但如此定义:http://docs.joomla.org/JModuleHelper/getModule,模块必须被分配给当前菜单项或所有菜单项。
显然,我可以进入数据库并自己提取参数,但我想以更整洁的Joomla方式完成它。
我的目标是编写一个库,但该库需要一些参数和自己的数据库表(库不能做这两件事),因此我正在尝试使用模块来填补空白。我需要从库代码中访问模块参数(可以从站点上的任何页面调用该库)。
感谢任何帮助!
我采用的解决方案是将以下代码添加到我的库中:
显然,我可以进入数据库并自己提取参数,但我想以更整洁的Joomla方式完成它。
我的目标是编写一个库,但该库需要一些参数和自己的数据库表(库不能做这两件事),因此我正在尝试使用模块来填补空白。我需要从库代码中访问模块参数(可以从站点上的任何页面调用该库)。
感谢任何帮助!
我采用的解决方案是将以下代码添加到我的库中:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('m.params')
->from('#__modules AS m')
->where('m.module=' . $db->quote('mod_my_module_name'));
$db->setQuery($query);
$module = $db->loadObject();
$module_params = new JRegistry();
$module_params->loadString($module->params);
我没有将这个答案添加到这个问题中,因为我认为应该有一个更好的解决方案,不直接查询核心数据库。然而,我认为上面的方法目前是最好的解决方案。
更新
根据 Joomla! 开发者组的一个回答,我实现了一个库/插件解决方案。插件可以具有参数,可以使用以下代码从任何地方提取参数:
$plugin = JPluginHelper::getPlugin('plugin_type', 'plugin_name');
$parameteres = new JRegistry($plugin->params);
$param =$parameteres->get('parameter');
插件比模块的优势在于,不需要像模块一样将插件分配给所有项目ID。
经过我进一步的研究,我相信没有关于我的原始问题的优雅解决方案,即获取未分配给当前项目ID的模块参数。因此,如果您发现这个问题是因为您想做类似的事情,那么我建议使用上面的解决方案或cppl下面的解决方案。两者都可以工作,并且它们之间可能没有太大的区别。