【问题标题】:Display article content within menu module in Joomla在 Joomla 的菜单模块中显示文章内容
【发布时间】:2013-01-13 02:57:02
【问题描述】:

我是 Joomla 的新手,我被要求将非 Joomla 网站转换为使用 Joomla。

该站点的结构类似于手风琴菜单,其中页面内容显示在指向页面的链接下方,如下所示:

点击第1条链接:

╔════════════════╦══════════════════════╗
║ Article 1 Link ║                      ║
║                ║ Content of article 1 ║
║ Article 2 Link ║                      ║
║ Article 3 Link ║                      ║
║ Article 4 Link ║                      ║
║ Article 5 Link ║                      ║
╚════════════════╩══════════════════════╝

点击第三条链接:

╔════════════════╦══════════════════════╗
║ Article 1 Link ║                      ║
║ Article 2 Link ║                      ║
║ Article 3 Link ║                      ║
║                ║ Content of article 3 ║
║ Article 4 Link ║                      ║
║ Article 5 Link ║                      ║
╚════════════════╩══════════════════════╝

在 Joomla 2.5 中可以做到这一点吗?我很难理解如何,因为您可以拥有一个菜单模块,但是您将如何在该模块中显示文章内容?

文章内容最好在菜单项的同一个<li>内,所以在html视图中:

<ul>
    <li><a href="#link1">Link 1</a></li>
    <li class="current"><a href="#link2">Link 2</a>
        <div>
            <!-- ARTICLE CONTENT FOR Link 2 -->
        </div>
    </li>
    <li><a href="#link3">Link 3</a></li>
</ul>

【问题讨论】:

  • 没有默认的 mod_menu,你需要根据需要自定义它,或者寻找其他模块,很可能你会有自己的代码,记住重命名原始模块源,这是个好习惯
  • @dmi3y 感谢您的评论,我投了赞成票,因为它让我有了一个良好的开端。我现在的计划是覆盖 mod_menu 并在其中添加编码以获取当前菜单项的文章。您认为这条路线大致正确吗?
  • 是的,我想在你的情况下我也会这样做

标签: joomla joomla2.5


【解决方案1】:

components/com_contact/contact/tmpl/default.php 中有一个示例,它从第 50 行(给予或接受)开始,展示了如何使用内置的 JHtml 手风琴(在 Joomla 中称为 Sliders)。如果您想从 mod_menu 的副本构建新模块,可以使用该代码作为示例。

不过,首先,我建议您尝试一些扩展,因为 JED 上有许多 Accordion Menus 可用。如果不出意外,您将获得有关如何最好地实施的想法。 http://extensions.joomla.org/extensions/structure-a-navigation/menu-systems/accordion-menus

【讨论】:

    【解决方案2】:

    我通过将 mod_menu 文件复制到 MYTEMPLATE/html/mod_menu/CUSTOMMENUNAME.php 添加了一个 mod_menu 覆盖

    然后我将其添加到 for 循环中:

    if ($item-&gt;id == $active_id) {

    这让我可以看到当前正在查看哪个页面。在 rcarey 的大力帮助下,The Joomla!论坛,我在 mod_menu 文件的顶部添加了这个:

    require_once JPATH_SITE.'/components/com_content/helpers/route.php';
    JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
    
    // Get an instance of the model for getting an article
    $model = JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request' => true));
    // Set application parameters in model
    $app = JFactory::getApplication();
    $appParams = $app->getParams();
    $model->setState('params', $appParams);
    

    然后在 mod_menu 循环中,我所要做的就是:

    $article = $model-&gt;getItem($item-&gt;id)

    现在我可以在 mod_menu 的循环中使用 $article

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 2014-10-25
      • 2014-12-24
      • 2012-05-18
      • 1970-01-01
      • 2011-07-02
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多