如何将参数传递给从文章加载的joomla模块

时间:2012-07-31 16:56:53

标签: joomla parameters module

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

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

3 个答案:

答案 0 :(得分:4)

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

  1. 将文件夹\plugins\content\loadmodule复制到\plugins\content\Myloadmodule(及其所有文件)
  2. new 文件夹中,将loadmodule.phploadmodule.xml重命名为myloadmodule.phpmyloadmodule.xml这些是您将要完成所有工作的文件。
  3. 在这两个文件中,将loadmodule的出现次数替换为myloadmodule,(案例 敏感
  4. myloadmodule.php中,从第36行开始,使用正则表达式删除正在处理的{loadposition xxx}中的内容。在文章中使用{myloadmoduel blah-blah-blah}时,您需要修改此正则表达式以获取您要提供的参数。
  5. loadposition的表'_extensions'中查找数据库条目,并为myloadposition创建相同的记录。 (除非你想写和安装)
  6. 最后,你需要用你的新参数渲染模块 - 我无法开始帮助那里,因为我不知道你将要做什么模块或参数工作,但是{{3}文档将有所帮助。
  7.  7。

    我认为我已经涵盖了所有内容,但这应该足以让大部分内容为您完成。完成后,请使用{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