简体   繁体   中英

Accessing contents of a menu in Joomla

I'm having trouble adapting an html document into a Joomla 3.4 CMS Template. I'm using bootstrap and I want to implement the following section of navigation bar code:

<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
    <li><a href="index.php">Home</a></li>
    <li class="active"><a href="services.php">Services</a></li>
    <li><a href="about.php">About</a></li>
    <li><a href="contact.php">Contact</a></li>
</ul>
</div>

I've put all of the links in the same menu. Is there some way to retrieve all of the items in a menu so that I can use them in a module?

The best way to achieve this is through "template override".

When you create the override of the module menu, in the file default.php you can add the structure that you need to use bootstrap 3.

For example I use this in my override ...

 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Note. It is important to remove spaces between elements. ?> <?php // The menu class is deprecated. Use nav instead. ?> <ul class="nav navbar-nav<?php echo $class_sfx;?>"<?php $tag = ''; if ($params->get('tag_id') != null) { $tag = $params->get('tag_id') . ''; echo ' id="' . $tag . '"'; } ?>> <?php foreach ($list as $i => &$item) { $class = 'item-' . $item->id; if ($item->id == $active_id) { $class .= ' current'; } if (in_array($item->id, $path)) { $class .= ' active'; } elseif ($item->type == 'alias') { $aliasToId = $item->params->get('aliasoptions'); if (count($path) > 0 && $aliasToId == $path[count($path) - 1]) { $class .= ' active'; } elseif (in_array($aliasToId, $path)) { $class .= ' alias-parent-active'; } } if ($item->type == 'separator') { $class .= ' divider'; } if ($item->deeper) { $class .= ' deeper'; } if ($item->parent) { $class .= ' parent'; } if (!empty($class)) { $class = ' class="' . trim($class) . '"'; } echo '<li' . $class . '>'; // Render the menu item. switch ($item->type) : case 'separator': case 'url': case 'component': case 'heading': require JModuleHelper::getLayoutPath('mod_menu', 'default_' . $item->type); break; default: require JModuleHelper::getLayoutPath('mod_menu', 'default_url'); break; endswitch; // The next item is deeper. if ($item->deeper) { echo '<ul class="nav-child unstyled small dropdown-menu">'; } elseif ($item->shallower) { // The next item is shallower. echo '</li>'; echo str_repeat('</ul></li>', $item->level_diff); } else { // The next item is on the same level. echo '</li>'; } } ?></ul> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM