我见过很多关于如何在自定义joomla上包含模块的示例!使用JModuleHelper :: getModules的组件,但是,当尝试将模块包含在自定义位置时,该数组将返回空。这是我的组件模板中的代码:
<?php
jimport('joomla.application.module.helper');
$modules = JModuleHelper::getModules('comwhcustomer');
foreach ($modules as $module){
echo JModuleHelper::renderModule($module);
}
?>
你会注意到我通过getModules函数的位置是comwhcustomer。此代码返回一个空白数组。如果我通过“页脚”,我会成功地将模块放在页脚位置。
我正在使用改编的protostar tempalte,我已将comwhcustomer位置添加到模板的xml定义文件中。我在模块管理器和位置文件中创建了模块,我选择了下拉列表中显示的“comwhcustomer”位置。在模块管理器页面上,我看到所选位置中列出的模块(comwhcustomer)。我已在数据库表#__modules中确认位置已正确保存。
但是,在getModules调用中,数组仍然是空的。我错过了什么?
Joomla版本3.4.1 当地环境 Windows IIS PHP 5.4.24 MySQL db
PS - 作为替代方案,我已成功使用JModuleHelper :: getModule()加载模块,但是,我在模块管理器中定义的任何属性都没有,因为它们不应该。我想使用上面提到的方法,因此我可以从管理器而不是代码中的属性控制模块行为,因为这个位置将用在该组件的多个视图中。
这是我第一次发布到SO。我非常感谢支持: - )
答案 0 :(得分:1)
itoctopus,你说得对!模块本身没有分配给任何页面,这是我没有考虑的部分!非常感谢你的帮助!我将它设置为在所有页面上显示,并且它有效!
当然,它并没有显示在所有其他页面上,因为它们不包含名为“comwhcustomer”的位置,所以它正是我所寻找的!