【问题标题】:How can I display Joomla modules within a component?如何在组件中显示 Joomla 模块?
【发布时间】:2011-05-01 22:45:09
【问题描述】:

我有一个包含多个游戏类别的组件,我想根据类别显示不同的横幅。我需要可自定义横幅(和链接),因此这不仅仅是显示categoryX.jpg 或其他内容的情况。

我在另一个问题上看到了这个Joomla help page,但它似乎只显示了一种模块类型,而不是一个特定的模块。我想使用各种 mod_custom 模块并显示适合该类别的模块(如果需要,我可以存储每个模块的 ID)。

有什么想法吗?

【问题讨论】:

    标签: module joomla components


    【解决方案1】:

    你可以创建一个新模块吗?

    如果每个类别都出现在查询字符串中 (catid=X),那么您可以对https://support.pillwax.com/open-source/doku.php?id=joomla:header_image 采取类似的方法。

    或者,该链接实际上可能会为您完成。

    【讨论】:

      【解决方案2】:

      这可以分两步完成:

      1. 使用“Load module into article”插件允许自己使用插件调用访问模块,例如:

        {module [*mod_id*]} // 其中 *mod_id* 是模块 ID

      2. 现在您可以调用插件将模块放置在任何地方,您现在需要转到您希望添加模块的组件的视图代码并添加此代码:

        echo JHTML::_('content.prepare', '{module [*mod_id*]}');

      请查看此链接 - http://www.alltogetherasawhole.org/group/developers/forum/topics/running-joomla-content-plugins - 关于第 2 点。我试图做同样的事情,但我发现它不起作用,原因是您可以在上面的页面链接上找到一条评论:

      “我注意到某些插件实际上希望 option=com_content 让它们正确处理 onPrepareContent,因此您实际上可能希望通过调用 JRequet::setVar 并在触发后恢复正确的值来“欺骗”它们。”

      【讨论】:

      • +1,在 2013 年也为我工作过;) Joomla 3 现在有这样的插件作为核心的一部分,所以echo JHTML::_('content.prepare', '{loadposition contact-banner}'); 对我来说非常有用。
      【解决方案3】:

      Joomla 内置了此功能。您可以在内容项中使用 {loadposition XX} 命令。您可以指定未出现在模板中的自定义模块位置,以确保您在正确的文章中具有正确的模块。

      http://docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F

      【讨论】:

        【解决方案4】:

        如果您想在 PHP 代码中显示模块,请使用此代码,它对我有用:

        <?php echo   JHTML::_('content.prepare', '{loadposition position-2}');  ?>
        

        如果您想在 html 内容中显示模块,那么只需将此代码放在您要显示模块的位置。

        {loadposition position-2}
        

        它加载分配给位置 2 的所有模块。

        【讨论】:

          【解决方案5】:

          您也可以使用Joomla Module Renderer

          $doc = JFactory::getDocument();
          $renderer = $doc->loadRenderer('modules');
          $position = 'custom_position_name';
          $options  = array('style' => 'raw');
          echo $renderer->render($position, $options, null); 
          

          请注意,除了分配模块位置外,该模块还必须设置为“在所有页面上显示”。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-14
            • 2012-03-21
            • 1970-01-01
            • 1970-01-01
            • 2011-07-02
            • 2012-04-23
            • 1970-01-01
            • 2014-08-02
            相关资源
            最近更新 更多