Page 1 of 1
Mega Drop Down Menus Template
Posted: Sat Jul 16, 2011 8:53 pm
by ptysell
For the life of me I cannot seem to get the menu module to generate the correct code for a mega drop down menu.
I am looking to get code like this:
Code: Select all
<ul id="topnav">
<li><a href="#" class="home">Home</a></li>
<li>
<a href="#" class="products">Products</a>
<div class="sub">
<ul>
<li><h2><a href="#">Desktop</a></h2></li>
<li><a href="#">Navigation Link</a></li>
<li><a href="#">Navigation Link</a></li>
</ul>
<ul>
<li><h2><a href="#">Laptop</a></h2></li>
<li><a href="#">Navigation Link</a></li>
<li><a href="#">Navigation Link</a></li>
</ul>
<ul>
<li><h2><a href="#">Accessories</a></h2></li>
<li><a href="#">Navigation Link</a></li>
<li><a href="#">Navigation Link</a></li>
</ul>
<ul>
<li><h2><a href="#">Accessories</a></h2></li>
<li><a href="#">Navigation Link</a></li>
<li><a href="#">Navigation Link</a></li>
</ul>
</div>
</li>
<li><a href="#" class="sale">Sale</a></li>
<li><a href="#" class="community">Community</a></li>
<li><a href="#" class="store">Store Locator</a></li>
</ul>
Everything I try results in the <div class="sub"> being repeated with the <ul> of the sub menu.
Thanks.
Re: Mega Drop Down Menus Template
Posted: Sun Jul 17, 2011 2:34 pm
by Dr.CSS
Why do you need the div?...
Re: Mega Drop Down Menus Template
Posted: Sun Jul 17, 2011 10:39 pm
by ptysell
Trying to make a menu manager template that works with this
http://www.sohtanaka.com/web-design/meg ... ss-jquery/
Not how I would do it but the client wants what the client wants.
Gotten this far
Code: Select all
{assign var='number_of_levels' value=10000}
{if isset($menuparams.number_of_levels)}
{assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}
{if $count > 0}
<ul id="topnav">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{if $node->depth ==2}
<div class='sub'>
<ul class='TEST'>
{/if}
{elseif $node->depth == 2}
{if $node->depth ==2}
</ul>
</div>
{/if}
{elseif $node->depth == 2}
{* repeat string="</li>" times=$node->prevdepth-$node->depth *}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
{elseif $node->depth == 2}</li></div></li>
{/if}
{if $node->parent == true or $node->current == true}
{assign var='classes' value='menuactive'}
{if $node->parent == true}
{assign var='classes' value='menuactive menuparent'}
{/if}
{if $node->children_exist == true and $node->depth < $number_of_levels}
{assign var='classes' value=$classes|cat:' parent'}
{/if}
{if $node->depth == 1}
<li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}</span></a>
{else}
<li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}</span></a></li>
{/if}
{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
{if $node->depth == 1}
<li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}</span></a>
{else}
<li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->menutext}</span></a></li>
{/if}
{elseif $node->current == true}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>
{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>
{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />
{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a></li>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}
which generates
Code: Select all
<ul id="topnav">
<li class="menuactive parent"><a class="menuactive parent" href="#"><span>Group 1</span></a>
<div class='sub'>
<ul class='TEST'>
<li class="menuactive parent"><a class="menuactive parent" href="#"><span>A</span></a></li>
<li><a href="#"><span>Item A1</span></a></li>
<li><a href="#"><span>Item A2</span></a></li>
</ul>
<!--BAD-->
</div>
<!--NEED NEW UL -->
<li class="#"><span>B</span></a></li>
<li><a href="#"><span>Item B1</span></a></li>
<li><a href="#"><span>Item B2</span></a></li>
<!-- EXTRA JUNK -->
</li></ul></li></ul>
<li><a href="#"><span>Content 2</span></a></li>
</li>
</ul>
Re: Mega Drop Down Menus Template
Posted: Sun Oct 02, 2011 8:50 pm
by Dr.CSS
This?...
{* CSS classes used in this template:
#menuwrapper - The id for the <div> that the menu is wrapped in. Sets the width, background etc. for the menu.
#primary-nav - The id for the <ul>
.menuparent - The class for each <li> that has children.
.menuactive - The class for each <li> that is active or is a parent (on any level) of a child that is active. *}
{assign var='number_of_levels' value=10000}
{if isset($menuparams.number_of_levels)}
{assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}
{if $count > 0}
<div id="menuwrapper">
<ul id="primary-nav">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string='<div class="sub"><ul>' times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string='</li></ul></div>' times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}
{if $node->parent == true or $node->current == true}
{assign var='classes' value='menuactive'}
{if $node->parent == true}
{assign var='classes' value='menuactive menuparent'}
{/if}
{if $node->children_exist == true and $node->depth < $number_of_levels}
{assign var='classes' value=$classes|cat:' parent'}
{/if}
<li class="{$classes}"><a class="{$classes}"
{elseif $node->type == 'sectionheader' and $node->haschildren == true}
<li class="menuparent"><h2><a class="menuparent"><span class="sectionheader">{$node->menutext}</span></a></h2>
{elseif $node->type == 'sectionheader'}
<li><a ><span class="sectionheader">{$node->menutext}</span></a>
{elseif $node->type == 'separator'}
<li style="list-style-type: none;"> <hr class="menu_separator" />
{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="menuparent"><a class="menuparent"
{else}
<li>
<a
{/if}
{if ($node->type != 'sectionheader' and $node->type != 'separator') or $node->parent == true or $node->current == true }
{if $node->target}target="{$node->target}" {/if}
href="{$node->url}"><span>{$node->menutext}</span></a>
{/if}
{/foreach}
{repeat string='</li></ul>' times=$node->depth-1}
</li>
</ul>
<div class="clearb"></div>
</div>
{/if}