Advanced Bulleted-List Menu - Conclusion (Page 7 of 7 ) Booya; nice looking portable menus with very little setup effort. The final code should be assembled as seen below, just include it in your template, change the styles to match your site, and you're all set. <html> <head> <title>advanced bulleted-list menu</title> <link rel="stylesheet" title="default" href="style.css" /> <script type="text/javascript"> <!-- function toggle(id) { if(document.getElementById) { var el = document.getElementById(id); el.style.display = (el.style.display == 'none') ? 'block' : 'none'; } } //--> </script> </head> <body>
<?php
// menu title => menu target $menu = array('Menu One'=>array('Page One'=>'blist_menu.php?pg=1', 'Page Two'=>'blist_menu.php?pg=2'), 'Menu Two'=>array('Page Three'=>'blist_menu.php?pg=3', 'Page Four'=>'blist_menu.php?pg=4'), 'Menu Three'=>array('Page Five'=>'blist_menu.php?pg=5', 'Menu Four'=>array('Page Six'=>'blist_menu.php?pg=6', 'Page Seven'=>'blist_menu.php?pg=7')));
// alternative method to using cookies function array_search_recursive($needle, $haystack) { $pos = null; $keys = array_keys($haystack); while(!$pos && (list($garbage, $value)=each($keys))) { if(is_scalar($haystack[$value])) { if($haystack[$value] === $needle) $pos[] = $value; } elseif(is_array($haystack[$value])) { if($pos = array_search_recursive($needle, $haystack[$value])) array_unshift($pos, $value); } } return $pos; }
// recursive function to draw menu function draw_menu($menu, $preserve, &$id) { if($id == 0) echo "<div id=\"$id\">\r\n<ul>\r\n"; else echo "<div id=\"$id\" style=\"display:none;\">\r\n<ul>\r\n"; $id += 1;
foreach($menu as $key=>$value) { if(is_array($value)) { if(@in_array($key, $preserve)) $toggle = $id; echo "<li><a href=\"#\" onclick=\"toggle($id);\">$key</a></li>\r\n"; draw_menu($value, $preserve, $id); } else { echo "<li class=\"file\">"; if(@in_array($key, $preserve)) echo "<a class=\"live\" href=\"$value\">$key</a>"; else echo "<a href=\"$value\">$key</a>"; echo "</li>\r\n"; } } echo "</ul>\r\n</div>\r\n"; if(isset($toggle)) echo "<script language=\"javascript\">toggle($toggle);</script>\r\n"; }
$id = 0; $base = basename($_SERVER['PHP_SELF']); $self = isset($_SERVER['QUERY_STRING']) ? $base.'?'.$_SERVER['QUERY_STRING'] : $base; $preserve = array_search_recursive($self, $menu); draw_menu($menu, $preserve, $id);
?>
</body> </html> | About the AuthorHi, I'm notepad. | DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
| | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | · | | | | |
| |