PHP Classes

File: class.sb_menu.README.txt

Recommend this page to a friend!
  Classes of JImmy Bo   SB PHP Menu Builder   class.sb_menu.README.txt   Download  
File: class.sb_menu.README.txt
Role: Documentation
Content type: text/plain
Description: README and USAGE
Class: SB PHP Menu Builder
Create menus and store definitions in files
Author: By
Last change: accessibility
Date: 5 months ago
Size: 3,769 bytes


Class file image Download
The SB Menu class is a PHP class that allows for the creation, modification, saving, loading, and display of a menu tree without the need for a database. This class is designed to be simple, efficient, and easily customizable. It uses a flatfile approach, meaning that the menu structure is stored in a text file rather than a database. 'label' (user provided) and 'id' (generated) are default fields in the base class. Class Methods: save($filename) - saves the menu tree to a file load($filename) - loads the menu tree from a file getNodeByField($field, $value) - returns a reference to the node with a field that matches a value applyCallbackToNode($id, $callback) - applies a callback to a node with a specific id applyCallbackToNodeByField($field, $value, $callback) - applies a callback to a node with a specific field that matches a value Examples: // an example showing a directory and subdirectories class.sb_menu.test.simple.php // a simple multilevel collapsible flexible and responsive accordion menu EXAMPLE USAGE: EXAMPLE USAGE: EXAMPLE USAGE: <?php // include the class include_once("class.sb_menu_1.0.php"); // example creation... (look at class.sb_menu.test.simple.php for extended class needed to render) class SimpleTree_Extended extends Tree { ... extended code ( render(), renderNode(), etc ) ... } // create extended class of Tree and throw in a render and renderNode to customize display based on dynamic data fields // we pass the name we want for the main root node. In the example, we skip rendering this root node. $menu = new SimpleTree_Extended(new TreeNode('Main Menu')); // .. or the extended class to seperate the render() method // now add some menus... // when menu is created, a root node is created and assigned to $menu->root. This is our main level. $last_menu = $menu->root->addChild(new TreeNode('Submenu 1')); $last_menu = $menu->root->addChild(new TreeNode('Submenu 2')); // another level $next_level = $last_menu->addChild(new TreeNode('Item 2.1')); // example adding more data for our extended class to use with a custom render() method $next_level->data['url'] = ""; // handled in extended class render $next_level->data['target'] = "_blank"; // handled in extended class render // # use a callback to run some code on a specific node via its id (id and label are default fields in base class) $menu->applyCallbackToNode($s2_id, function($node) { $node->data['label'] = 'New Label'; $new_submenu = new TreeNode('New Submenu'); $node->addChild($new_submenu); }); // example usage of applyCallbackToNodeByField($field, $value, $callback) // (this example changes the label of the node with label 'Submenu 1' to 'New Label') $menu->applyCallbackToNodeByField('label', 'Submenu 1', function($node) { $node->data['label'] = 'New Label'; }); // get the reference to the node by a field for modification. (only returns first match) // example usage of getNodeByField($key, $value) $s2 = $menu->getNodeByField('label', 'Submenu 2'); $s2_id = $s2->data['id']; # save (ez) (make sure directory or file is writeable) $menu->save('menu-simple.txt'); # load (pz) $menu2 = $menu->load('menu-simple.txt'); // render (display the menu :: see example Tree extended class in class.sb_menu.test.simple.php ) echo $menu->render('sbmenu'); // render defined in extended class ?>