Navigation helper
You can view the source on GitHub.
Example setup:
$nav = new nav(); $nav->link_add('/', 'Home'); $nav->link_add('/contact/', 'Contact us'); $nav->link_add('/help/', 'Help');
And to print:
echo $nav->html();
Using groups
$nav = new nav(); $nav->group_add('Group A'); $nav->link_add('/a1/', 'A1'); $nav->link_add('/a2/', 'A2'); $nav->link_add('/a3/', 'A3'); $nav->group_add('Group B'); $nav->link_add('/b1/', 'B1'); $nav->link_add('/b2/', 'B2'); $nav->link_add('/b3/', 'B3');
Sub navigation
$sub_nav = new nav(); $sub_nav->link_add('/about/1/', 'Page 1'); $sub_nav->link_add('/about/2/', 'Page 2'); $sub_nav->link_add('/about/3/', 'Page 3'); $nav = new nav(); $nav->link_add('/', 'Home'); $nav->link_add('/about/', 'About', array('child' => $sub_nav));
By default the sub-nav will not be rendered until the path matches the parent link.
To disable this behaviour you can call:
$nav->automatically_expand_children(false);
To have all sub-navs open:
$nav->expand_all_children(true);
Or just specify it on a per link basis:
$nav->link_add('/about/', 'About', array('child' => $sub_nav, 'open' => true));
Selected link
Normally links will be selected automatically, based on the best match of request.uri
.
Instead you can manually specify which link is selected:
$nav->link_add('/path/', 'Name', true); $nav->link_add('/path/', 'Name', array('selected' => true));
Or to just switch off the automatic process, just call:
$nav->automatically_select_link(false);
Alternatively, if the 'request.uri' is not what you want to match against, you can instead call:
$nav->path_set('/path/');
Custom link text
If the navigation text needs to be set elsewhere (e.g. for localisation), then the nav object can be expended with
/app/library/class/nav.php class nav extends nav_base { public function link_name_get($url) public function link_name_get($url, $config) public function link_name_get_html($url) public function link_name_get_html($url, $config) }
An example of this is can be found for the basic-site.
White space
The whitespace indent can be set to something other than 3 tabs either by:
$nav->indent_set(3);
Or if you want to completely remove the white space:
$nav->include_white_space(false);
Other configuration
For the full list of link configuration options:
$nav->link_add('/about/', 'About', array( 'selected' => true, 'child' => $sub_nav, 'open' => true, 'html' => false, // If second parameter is already html encoded (e.g. an image) 'item_class' => 'xxx', 'link_class' => 'xxx', 'link_title' => 'xxx', ));
Or if you just want to add a custom class
to the main unordered list:
$nav->main_class_set('xxx');