i trying highlight open menu item using php.
html menu items.
<ul class="menu"> <li><a href="index.php?p=edit-profile&error=message">edit profile</a></li> <li><a href="index.php?p=edit-contact">edit contact</a></li> <li><a href="index.php?p=edit-facilities">edit facilities</a></li> <li><a href="index.php?p=edit-location">edit location</a></li> <li><a href="index.php?p=edit-images">manage images</a></li> </ul> this how tried in php:
if ($_server['query_string']) { list($querystring) = explode('&',$_server['query_string']); $openpage = $querystring; list($key, $value) = explode('=',$openpage); $currentpage = $value; // determine menu item highlight: switch ($currentpage) { case 'edit-profile': $class1 = 'class="active"'; break; case 'edit-contact': $class2 = 'class="active"'; break; case 'edit-facilities': $class3 = 'class="active"'; ----------- // default include main page. default: $class = 'class=""'; break; } // end of main switch. } else { //determine index page $path = $_server['php_self']; $indexpage = basename($path); $indexpage = basename($path, '.php'); } this how echo these classes in menus:
<li <?php if(isset($class1)) echo $class1; ?>><a href="index.php?p=edit-profile">edit profile</a></li> <li <?php if(isset($class2)) echo $class2; ?>><a href="index.php?p=edit-contact">edit contact</a></li> this solution working me. problem is, if have lot of pages need use many class variables in switch case.
can tell me there alternative solution minimize php code?
hope may me out.
thank you.
one simple solution store menu items in map, , iterate on them:
$menuitems = [ 'edit-profile' => [ 'url' => 'index.php?p=edit-profile&error=message', 'name' => 'edit profile' ], 'edit-contact' => [ 'url' => 'index.php?p=edit-contact', 'name' => 'edit contacts' ], ... ] then iterate on items.
<ul class="menu"> <?php foreach($menuitems $menuitem => $desc) { // $currentpage query string $class = ($currentpage === $menuitem)? 'class="active"': ''; echo '<li '.$class.'><a href="'.$desc['url'].'">'.$desc['name'].'</a></li>'; } ?> </ul>
Comments
Post a Comment