Gary Menzel wrote:

While I agree that every site will implement menu's in a different way, I think what is lacking in the latest template releases is "example" code showing multi level menus.

Here is some example code for multi-level menus. A bit rushed, but hey, it might even work :)

<cfsetting enablecfoutputonly="yes">
<!---
|| LEGAL ||
$Copyright: Daemon Pty Limited 1995-2003, http://www.daemon.com.au $
$License: Released Under the "Common Public License 1.0", http://www.opensource.org/licenses/cpl.php$


|| DEVELOPER ||
$Developer: Ben Bishop ([EMAIL PROTECTED]) $
--->
<cfscript>
if(not isDefined("attributes.navID")) // allows a navID to be passed in, overiding request.navID
attributes.navID=request.navID;
// Check for Friendly URL
if(application.config.plugins.fu)
fu = createObject("component","#application.packagepath#.farcry.fu");


// get navigation items
o = createObject("component", "#application.packagepath#.farcry.tree");
if(application.navid.home eq request.navid) {
navFilter=arrayNew(1);
navfilter[1]="status IN (#listQualify(request.mode.lvalidstatus, "'")#)";
qNav = o.getDescendants(objectid=attributes.NavID, afilter=navFilter);
} else
qNav = o.getBloodLine(objectid=attributes.NavID, jointable='dmNavigation', levelsabove='9', status=request.lvalidstatus);


// default values
previouslevel=0;
currentlevel=0;
section=0;
// build menu [bb: this relies on nLevels, starting from nLevel 2]
for(i=1; i lt incrementvalue(qNav.recordcount); i=i+1) {
if(qNav.nLevel[i] gt 1) { // if below Home
if(application.config.plugins.fu) { // check for Friendly URL
href = fu.getFU(trim(qNav.ObjectID[i]));
} else {
href = application.url.conjurer & "?objectid=" & trim(qNav.ObjectID[i]);
}
previouslevel=currentlevel;
currentlevel=qNav.nLevel[i];
if(currentlevel gt previouslevel) { writeOutput("<ul>"&chr(13)); } // new menu level
else if(currentlevel lt previouslevel) { writeOutput("</li>"&chr(13)&"</ul>"&chr(13)); } // close menu level
else { writeOutput("</li>"&chr(13)); }
writeOutput("<li");
if(qNav.nLevel[i] eq 2) {
section=incrementvalue(section);
writeOutput(" class=""prinav"&section&""""); // style first level nodes below home
}
writeOutput(">");
writeOutput("<a href="""&href&"""");
if(qNav.ObjectID[i] eq attributes.NavID) // style current objectid
writeOutput(" class=""navselected""");
writeOutput(">");
writeOutput(trim(qNav.ObjectName[i])&"</a>"); // write the label
}
}
writeOutput("</li>"&chr(13)&"</ul>"); // close menu
</cfscript>
<cfsetting enablecfoutputonly="no">



--- You are currently subscribed to farcry-dev as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004

Reply via email to