This is the product I am using:
phpLayersMenu
phpLayersMenu is an elaborate SourceForge-hosted package by Marco Pratesi and is certainly the most flexible of all packages I have examined. It supports menus that are either static or dynamic on the client (i.e. with or without JavaScript), potentially an excellent feature. The major supported forms are static tree menus, vertical menus with DHTML slideouts, and horizontal menus with DHTML slideouts.
PhpLayersMenu includes more documentation than almost any other package, but the documentation largely describes the theory of operation, not how to use the package. Some of its internals are inspired by Bjorge Dijkstra's PHP Tree Menu 1.1 (not to be confused with the Sword Su TreeMenu described previously). The connection is not obvious to the user -- phpLayersMenu is far more sophisticated -- but is evident in the structure of the menu definition files.
The demo shows an especially nice example of a tree structured menu that's static on the client (can be expanded by going back to the server). I haven't determined yet if it will produce a DHTML version of that same menu.
The client-side JavaScript includes browser detection and supports many different browsers.
Menu structure is read from menu definition files, or can be specified in string format. <opinion>Personally I prefer to separate this function from the operation of the menu itself. For example, I like the way in which HTML_TreeMenu lets the user build the menu tree programmatically. Then the storage of menu structures is completely independent from the menu package. So many menu packages make a big deal of this: store your menus in XML, in mySQL, in text files, etc. But it is actually irrelevant to the operation of the menu system.</opinion>
The programming interface is practical, but somewhat verbose. I didn't like it at first, but much of the verbosity is the necessary price for some of the features, e.g. setting custom graphic icons. Some of it is rather strange: the same menu object can be associated with many completely different menus, each retrievable by name. I would think that different menu structures should be different menu objects.
The package depends upon the PHPLib Templates feature, which is bundled with it, and is used to control the HTML generated for the menus. While at first this may seem to add to the complexity of the package, in practice it will make the menus much easier to customize without hacking the code.
Local Demo: phplayersmenu-2.2.0/
Home: https://sourceforge.net/projects/phplayersmenu/ see also http://phplayersmenu.sourceforge.net/
Last Updated: 2002-10-12 (v2.2.0)
Johan van Zyl