5

我以前以这种方式从 Joomla 文章中添加了 Joomla 模块:{loadmodule mod_name}但这次我需要从中传递参数。

如何将文章中的参数传递给 Joomla 模块?

4

3 回答 3

5

您需要修改或克隆 Joomla 插件loadmodule,因为它不处理除了模块名称之外的参数。如果您精通 PHP,这并不是特别困难(假设您不介意通过一些 Regex 工作弄脏您的手),但我建议您克隆它并以这种方式使用它:

  1. 将文件夹复制\plugins\content\loadmodule\plugins\content\Myloadmodule(及其所有文件)
  2. 文件夹中,将loadmodule.php和重命名loadmodule.xmlmyloadmodule.phpmyloadmodule.xml这些是您将完成所有工作的文件。
  3. 在这两个文件中,将出现的地方替换为loadmodule, myloadmodule区分大小写
  4. myloadmodule.php中,从第 36 行左右开始,使用 Regex 去除{loadposition xxx}正在处理的内容。您需要修改此正则表达式以获取您{myloadmoduel blah-blah-blah}在文章中使用时要提供的参数。
  5. 在表 '_extensions' 中找到数据库条目,loadposition并为myloadposition. (除非您想编写和安装程序)
  6. 最后,您需要使用新参数渲染模块 - 我无法开始提供帮助,因为我不知道您将要执行哪些模块或参数工作,但是这个renderModule文档会有所帮助。
  7. 7.

我想我已经涵盖了所有内容,但这应该足以为您完成大部分工作。完成后,使用{myloadposition ...}代替{loadposition ...}.

于 2012-08-02T20:03:28.757 回答
2

我将提供有关上一个答案的更多详细信息,以便能够将参数传递给标签为 {loadmodule mod_name,param} 的模块 GDP 给出的解决方案工作正常:重写内容插件(例如 myloadmodule)既简单又快捷,按照上一个答案中的步骤 1 到 5 进行操作。对我来说,问题在于步骤 6:如何将参数放入模块中,以及如何在模块中检索 de 参数。

第 7 步:如何为模块的“渲染”提供参数

在创建的插件中(基于 loadmodule),您必须找到包含以下代码的行:

echo $renderer->render($module, $params);

在此行之前,您可以将参数放入 $params 参数中,但模块的“render”仅检索带有键“params”的参数,使用 json 格式。因此,要将参数传递给渲染函数,您可以执行以下操作:

$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

于 2014-05-07T22:23:49.853 回答
0

我用谷歌搜索了同样的问题并找到了你的问题。我知道它很旧,但我的发现可能对其他人有所帮助。现在有插件允许嵌入模块并允许您将参数传递给它。我的选择是Module Plant

于 2014-07-17T20:42:41.110 回答