PHP使用数组和foreach实现页面导航时分类active状态设置问题
解决方案
你只需要两步修改即可实现分类菜单自动激活展开:
第一步:获取当前激活页面所属分类ID
在你原有代码中$arr遍历赋值完成后,新增以下代码:
// 查找当前激活页面对应的分类ID $active_cat_id = ''; foreach ($arr as $nav_item) { if ($nav_item['css_class'] === 'active') { $active_cat_id = $nav_item['category']; break; } }
第二步:遍历分类时动态设置active类
修改你输出分类的循环逻辑,每次循环前判断当前分类是否为激活分类,给$CAT_ACTIVE赋值:
foreach ( $cat_options as $cat) { // 动态判断当前分类是否需要激活 $CAT_ACTIVE = ($cat['category'] == $active_cat_id) ? 'active' : ''; // 以下保留你原有输出代码即可 echo " <div class=\"menu-item has-sub $CAT_ACTIVE\"> <a href=\"javascript:;\" class=\"menu-link\"> <div class=\"menu-icon\"> <i class=\"".$cat['category_image']."\"></i> </div> <div class=\"menu-text\">".$cat['category_name']."</div> <div class=\"menu-caret\"></div> </a> <div class=\"menu-submenu\">"; foreach ( $arr as $nav) { if ($nav['category'] == $cat['category'] AND $nav['link_display'] == 'yes') { echo " <div class=\"menu-item ".$nav['css_class']."\"> <a href=\"".$nav['link_href']."\" class=\"menu-link \"><div class=\"menu-text\">".$nav['link_text']."</div></a> </div> "; } } echo " </div> </div>"; }
逻辑说明
当用户访问任意页面时,代码会先匹配到当前激活的页面,提取它所属的分类ID,遍历一级分类时只要匹配到对应ID,就自动给分类容器加上active类,实现菜单自动展开效果。
内容的提问来源于stack exchange,提问作者Kelso
相关产品推荐
相关产品推荐

