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 18 2025 22:21:04
Script start
Timing: Jan 18 2025 22:21:04
Module start 'layout'
Timing: Jan 18 2025 22:21:04
Module start 'content'
Timing: Jan 18 2025 22:21:04
Module end 'content'
Timing: Jan 18 2025 22:21:04
Script end

Main resources:

Total runtime0.7425 sec
Peak memory usage4,096.0000 KB
Database Queries60

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0053 589.4922152.6406
Module start 'layout' 0.00530.0040 742.132839.4766
Module start 'content' 0.00930.7311 781.6094518.8750
Module end 'content' 0.74050.0020 1,300.484412.1250
Script end 0.7424  1,312.6094 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00310.4234160.0002
Check MTime0.00130.1712160.0001
Mysql Total
Database connection0.00090.118210.0009
Mysqli_queries0.679791.5354600.0113
Looping result0.00060.0841580.0000
Template Total0.707895.320.3539
Template load0.00180.243120.0009
Template processing0.706095.083420.3530
Template load and register function0.00020.032010.0002
states
state_id_array0.00080.101410.0008
state_identifier_array0.00090.119320.0004
Override
Cache load0.00150.2017340.0000
Sytem overhead
Fetch class attribute can translate value0.00090.125520.0005
Fetch class attribute name0.00120.168140.0003
XML
Image XML parsing0.00030.036620.0001
class_abstraction
Instantiating content class attribute0.00000.001440.0000
General
dbfile0.00120.1666100.0001
String conversion0.00000.001540.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.0002 secs