We
can use the menu funtion menu_tree_all_data(), which war available in
menu.inc file. Need to pass the menu name with prefix of 'menu-' as a
paramenter for this function.
Ex :
Let us create one menu with name as "test-menu". And create few items in it, such as Menu1, Menu2, Menu3 as a sub link of Menu1 (Menu1--->Menu3). Now, whenever, we click on that menu under site building -> Menu section, the url would be with "menu-test-menu" as a last argument. We need pass this one as a paramenter to the function menu_tree_all_data() as follows:
$menu_tree = menu_tree_all_data("menu-test-menu");
It would return an array which has main menus (such as Menu1, Menu2 ) as keys, and values consists of array with two key-value pairs, keys are "link", "below". Here, the key "link" would associate with details of current menu which includes a key 'has_children', it would be '1' if the current menu has sub-links. And the key "below" would associate with the sub-links details if any.
function get_sitemap() {
Ex :
Let us create one menu with name as "test-menu". And create few items in it, such as Menu1, Menu2, Menu3 as a sub link of Menu1 (Menu1--->Menu3). Now, whenever, we click on that menu under site building -> Menu section, the url would be with "menu-test-menu" as a last argument. We need pass this one as a paramenter to the function menu_tree_all_data() as follows:
$menu_tree = menu_tree_all_data("menu-test-menu");
It would return an array which has main menus (such as Menu1, Menu2 ) as keys, and values consists of array with two key-value pairs, keys are "link", "below". Here, the key "link" would associate with details of current menu which includes a key 'has_children', it would be '1' if the current menu has sub-links. And the key "below" would associate with the sub-links details if any.
function get_sitemap() {
$menu_items = menu_tree_all_data('menu-test-menu');
foreach($menu_items as $key => $value) {
$output .= "<a
href='".url($value['link']['link_path'])."'
title='".$value['link']['link_title']."'
>".$value['link']['link_title']."</a><br/>";
if($value['link']['has_children']) {
$output = add_child_menus($value['below'],$output);
}
}
return $output;
}
function add_child_menus($child_menus = array(),$output = null) {
foreach ($child_menus as $child_key => $child_value) {
$output
.= "<a style='margin-left:".$child_value['link']['depth']."0px'
href='".url($child_value['link']['link_path'])."'
title='".$child_value['link']['link_title']."'
>".$child_value['link']['link_title']."</a><br/>";
if($child_value['link']['has_children']) {
$output = add_child_menus($child_value['below'],$output);
}
}
return $output;
}
Here,
in the get_sitemap() function, checking whether menu item has children
or not, if TRUE, calling the recursive function add_child_menus() with
the value associated with "below" key and current string.
Function add_child_menus() would recheck each and every sublink and
associated links and returns the final output which has all menus with
corresponding sublinks. We can add classes in the anchor tags and place
respective CSS.
No comments:
Post a Comment
Your comment is so valuable as it would help me in my growth of knowledge.