显示模块在多个位置


8

是否可以在多个位置(最好是本地显示)或通过第三方扩展显示模块?

我知道有解决方法...

  • 克隆模块并更改位置,但是,如果该模块包含自定义HTML,并且这可能经常更改,那么这将很麻烦。
  • 使用load语法将模块拖放到您想要的任何位置,但仍然导致创建模块只是为了容纳其他模块

但两者都会带来我宁愿放弃的额外维护工作。

Answers:


1

您可以在任何地方使用nonumbers模块。

http://www.nonumber.nl/extensions/modulesanywhere/用户指南

与核心中的加载位置版本不同,它也可以在模块中使用,而不仅仅是文章。因此,您可以制作第二个自定义html模块,然后调用第一个位置。这基本上可以为您提供职位的副本,但是您在第一个模块中所做的任何更改设置也将应用于第二个“克隆”中。


感谢@Jordan,但您可以在无模块的情况下进行此操作-请参阅docs.joomla.org/How_do_you_put_a_module_inside_an_article%3Fload如果将“准备内容”设置为“是”,则自定义HTML模块会接受语法),因此属于第二种解决方法。
编码手册,2014年

嗯,请注意,我的经验是该方法不起作用,可能是我尝试过的特定版本中的错误。此后没有真正尝试过。
乔丹·拉姆斯塔德(Dordan Ramstad),2014年

随处可见的模块的问题在于它不进行任何缓存(请参阅此处的我们的经验:itoctopus.com/…)。这意味着对于重载模块,将始终重新创建它们,而不仅仅是从高速缓存中获取(即使存在该文件的高速缓存文件)。
itoctopus

1

我建议构建一个简单的插件,并使用类似的方法将该模块发布到多个位置(使用循环):

$document   = &JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
for ($x=0; $x<=5; $x++) {
     $position   = 'myPosition' . $x;
     echo $renderer->render($position, $options, null);
}
// Repeat for each module position, changing only $position

(未测试)

我将看看是否可以在今天晚些时候整理出更完整的内容。


1

在简单的级别上,您可以尝试以下操作:

如果这将是一个模块,并且您已经定义了要显示的位置,则可以在模板中创建一个特殊的模块位置,并在模板中所需的位置进行2次或任意多次调用。模板。无论您在哪里调用它,它将加载该位置的模块。

如果有更多模块并且要应用更多位置,则上述方法仍然可以,除非您需要更多控制或模块外观复杂,否则可能需要“更智能”地创建模块位置并要求模块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.