Creating a Suckerfish dropdown menu for Ez

Author Message

steve walker

Wednesday 06 July 2005 10:20:13 am

Hi there,

If someone could help out on this bit of coding, I can give a good dropdown suckerfish style menu in the contribs.

The end result I'm after can be seen via:
http://www.htmldog.com/articles/suckerfish/dropdowns/example/

I'm writing the code that creates the bullet list that then becomes the dropdown navigation menu. The code needs to spider the folders, very much like the site map - but has to go beyond just two levels.

Using the sitemap code I have:

{let page_limit=10
     col_count=2
     children=fetch('content','list',hash(parent_node_id,2,limit,$page_limit,offset,$view_parameters.offset))
     child_count=fetch('content','list_count',hash(parent_node_id,$node.node_id))}
<ul id="nav">	 
{section name=Child loop=$children}

   <li><a href={$Child:item.url_alias|ezurl} class="daddy">{$Child:item.name}</a></li>

    {let sub_children=fetch('content','list',hash(parent_node_id,$Child:item.node_id,limit,$page_limit))
         sub_child_count=fetch('content','list_count',hash(parent_node_id,$Child:item.node_id))}

    <ul>
    {section name=SubChild loop=$:sub_children}
    <li><a href={$:item.url_alias|ezurl}>{$:item.name}</a></li>
    {/section}
    </ul>

    {/let}
{/section}
 </ul>
{/let}

The problem is - like I say, only 2 levels - needs to work for three or four.

The second big issue is that the code created for the dropdown needs to be in format:

	<li><a href="#">Percoidei</a>
		<ul>
			<li><a href="#" class="daddy">Remoras</a>

				<ul>
					<li><a href="#" class="daddy">Echeneis</a>
						<ul>
							<li><a href="#">Sharksucker</a></li>
							<li><a href="#">Whitefin Sharksucker</a></li>
						</ul>
					</li>
					<li><a href="#" class="daddy">Rhombochirus</a>

						<ul>
							<li><a href="#">R. osteochir</a></li>
						</ul>
					</li>
				</ul>
			</li>
			<li><a href="#" class="daddy">Tilefishes</a>
				<ul>

					<li><a href="#">Caulolatilus</a></li>
					<li><a href="#">Lopholatilus</a></li>
					<li><a href="#">Malacanthus</a></li>
				</ul>
			</li>
		</ul>
	</li>

The important bit here is that there needs to be some switch code within the <li> tag that says 'if this node has children, print 'class="daddy"'.

Could anyone show me the code for this?

Much appreciated.

Steve.

http://www.oneworldmarket.co.uk

David Eriksson

Friday 08 July 2005 8:29:06 am

To get more levels, I would think you only need to re-do the loop a few times more within itself. Perhaps you can call on the template from itself, on each of the child nodes or something.

As for you second problem, is this what you are looking for?

{section show=$children|count|gt(0)}class='daddy'{/section}

Count the children, and check if the amount is greater than 0. If so, output code.

/David

/David

steve walker

Friday 08 July 2005 10:10:23 am

Dave,

Thanks for the response - I'll give it another go and let you know how I get on.

Cheers, Steve.

http://www.oneworldmarket.co.uk

steve walker

Saturday 09 July 2005 8:23:08 am

Hurray!

Got this working. Ended up hacking the old style treemenu code.

Have uploaded it a contrib which can be found at:

http://ez.no/community/contribs/template_plugins/suckerfish_dropdown_menu

Be good to hear if it my dodgy instructions make any sense.

Cheers, Steve.

http://www.oneworldmarket.co.uk

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 15 2025 07:58:46
Script start
Timing: Jan 15 2025 07:58:46
Module start 'layout'
Timing: Jan 15 2025 07:58:46
Module start 'content'
Timing: Jan 15 2025 07:58:48
Module end 'content'
Timing: Jan 15 2025 07:58:48
Script end

Main resources:

Total runtime1.1781 sec
Peak memory usage6,144.0000 KB
Database Queries60

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0060 684.7344183.7031
Module start 'layout' 0.00600.0031 868.437552.5938
Module start 'content' 0.00901.1673 921.03131,775.3828
Module end 'content' 1.17630.0017 2,696.414168.5078
Script end 1.1780  2,764.9219 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00570.4845160.0004
Check MTime0.00130.1137160.0001
Mysql Total
Database connection0.00070.063510.0007
Mysqli_queries1.117394.8431600.0186
Looping result0.00050.0463580.0000
Template Total1.134996.320.5674
Template load0.00500.423320.0025
Template processing1.129995.909620.5649
Template load and register function0.00130.112210.0013
states
state_id_array0.00200.172210.0020
state_identifier_array0.00100.081820.0005
Override
Cache load0.00450.3830340.0001
Sytem overhead
Fetch class attribute can translate value0.00060.046720.0003
Fetch class attribute name0.00200.166640.0005
XML
Image XML parsing0.00020.018420.0001
class_abstraction
Instantiating content class attribute0.00000.000740.0000
General
dbfile0.00200.1690100.0002
String conversion0.00000.000740.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
4content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
8content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
1content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
3content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 18
 Number of unique templates used: 6

Time used to render debug report: 0.0001 secs