如何在组件区域显示模块


13

我经常需要创建一个菜单项,以在组件区域中显示模块,而没有任何其他内容。

我解决此问题的方法是创建新文章,并仅{loadposition mymodule}在文章内容中添加。然后,为该文章创建一个“单一文章”菜单项。这对于单个模块来说很好,但是如果我要用这种方式显示20个不同的模块怎么办?我将必须创建20个模块,20个(几乎为空)文章和20个菜单项。

还有其他方法可以在模板的组件区域中显示模块(仅显示其他内容)?技巧?骇客?有想法吗?


您可能会发现它在Joomla中很有用!3使用编辑器按钮为您创建一个模块。这将使它变得快速且更少出错。
Eoin

Answers:


10

为此,我在与组件相同的位置创建了一个模块位置,然后检查该位置是否存在模块,然后显示该模块,否则选择该组件:

代码示例:

<main id="content" role="main" class="main">
 <?php 
 if ($this->countModules('myposition')) 
   { ?>
     <jdoc:include type="modules" name="myposition" style="xhtml" />
 <?php } 
  else 
  { ?>
     <jdoc:include type="component" /> 
  <?php } ?>
</main>

然后,当我想在页面中显示模块而不是组件时,我创建了将模块分配给该菜单项的模块,然后完成。

一个小注意事项:

为了方便起见,我建议将此模块位置命名为“内容模块”,“主模块”或“ compomodule”。任何可以提醒任何放置在此处的模块的信息都将替换组件输出。


1
这是理想的解决方案。许多商业模板在其管理端配置中都有一个参数切换,但是如果您不使用这些商业模板之一,这是最有效,最优雅的答案。
Toni Marie 2014年

1
我喜欢这个想法,它简单有效,并且易于在现有模板中实现。优秀的。
johanpw 2014年

9

为了增强此处给出的答案:

要在组件视图中包含模块位置并在其中加载模块,只需添加

echo JHtml::_('content.prepare', '{loadposition yourmodulposition}');

到视图文件。

带有加载位置short标签的第二个字符串可以替换为包含更多html的var(如果需要)。您不必为每个新的模块化位置写该行:

$outputModules = '<strong>Some Html</strong>'
                 .'{loadposition yourmodulposition1}'
                 .'{loadposition yourmodulposition2}';


echo JHtml::_('content.prepare', $outputModules);

(我知道这不是作者问题的直接答案。)


2

这是一个简单有效的解决方案。我试过了jdoc:include,但是没有用。

    $ document = JFactory :: getDocument();
    $ renderer = $ document-> loadRenderer('modules');
    $ position ='custompositionname';
    $ options = array('style'=>'raw');
    echo $ renderer-> render($ position,$ options,null);复制代码 

请进一步说明以上代码如何用于实现问题中所述的预期结果。
FFrewin

在支持的文件中,创建一个新模块并设置其位置(例如custompositionname)并发布。在前端,添加上面的代码,它可以正常工作。
user2589739 2015年

0

对于扩展程序演示和下载按钮,我必须在我的网站上执行相同的操作,但是,老实说,我认为将内容分开在某些方面会更好,因为它更易于管理。不仅我非常确定没有办法通过实际的CMS实现您要查找的内容,只有硬编码(不再赘述)。


0

首先,根据您的问题,您已经在创建20个模块和20个菜单项,因此实际上您唯一要做的一件事情就是为每个模块创建一个单行内容项。如果那真的很麻烦,那就继续@FFrewin的想法。有点hacky,但是可以用。

就个人而言,我会选择内容项。实际上,当我构建带有弹出对话框的系统时,我也希望在不启用js的情况下进行工作。我将对话框内容放在custom_html模块中,装配了要显示的模块,并在单击链接时将其定位。然后,我还将链接指向一个内容项,包括您所描述的模块。如果启用了js,则不会遵循该链接,并且会显示对话框。如果禁用了js,则会跟随该链接,并且对话框的内容显示为content。内容在一个地方,所以我没有维护内容的两个单独副本。




0

创建空白文章。

创建菜单项,选择您创建的文章。

在未使用的位置创建模块,仅在所选页面上设置菜单分配,从上方仅选择菜单项。

因为这是我想提供的答案,所以这就是我要做的。

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.