我以前用Joomla文章中的方式添加了Joomla模块:{loadmodule mod_name}
但这次我需要从中传递参数。
如何将文章中的参数传递给Joomla模块?
答案 0 :(得分:4)
您需要修改或克隆Joomla插件loadmodule
,因为它不处理模块名称以外的参数。如果你精通PHP(假设你不介意用一点Regex工作来解决问题),这并不是特别困难,但我建议克隆它并以这种方式使用它:
\plugins\content\loadmodule
复制到\plugins\content\Myloadmodule
(及其所有文件)loadmodule.php
和loadmodule.xml
重命名为myloadmodule.php
和myloadmodule.xml
。 这些是您将要完成所有工作的文件。loadmodule
的出现次数替换为myloadmodule
,(案例 敏感 )myloadmodule.php
中,从第36行开始,使用正则表达式删除正在处理的{loadposition xxx}
中的内容。在文章中使用{myloadmoduel blah-blah-blah}
时,您需要修改此正则表达式以获取您要提供的参数。loadposition
的表'_extensions'中查找数据库条目,并为myloadposition
创建相同的记录。 (除非你想写和安装)我认为我已经涵盖了所有内容,但这应该足以让大部分内容为您完成。完成后,请使用{myloadposition ...}
代替{loadposition ...}
。
答案 1 :(得分:1)
我将提供有关上一个答案的更多详细信息,以便能够将参数传递给标记为{loadmodule mod_name,param}的模块 GDP提供的解决方案很好:按照上一个答案中的步骤1到5,重写内容插件(例如myloadmodule)很容易,也很快。 对我来说,问题在于第6步:如何将参数放入模块,以及在模块中检索de参数。
步骤7:如何为模块的“渲染”提供参数
在创建的插件中(基于loadmodule),您必须找到包含以下代码的行:
echo $renderer->render($module, $params);
在此行之前,您可以将参数放入$ params参数中,但模块的“render”仅使用json格式检索带有“params”键的params。 因此,要将参数传递给渲染函数,您可以执行以下操作:
$param = array('param_name' => 'value'); // param_name = value
$params = array('params' => json_encode($param)); // 'params' (String) should be decoded by the render of the module
echo $renderer->render($module, $params);
步骤8:如何检索模块中的参数
在模块的帮助器中,您可以使用$ params变量检索参数:
$value = $params->get('param_name');
要了解帮助程序,请阅读本教程:http://docs.joomla.org/J3.3:Creating_a_simple_module/Developing_a_Basic_Module
答案 2 :(得分:0)
我搜索了同样的问题并找到了你的问题。我知道它的旧,但我的发现可能会帮助别人。现在有插件允许嵌入模块并允许您将参数传递给它。我的选择是Module Plant。