由于bootstrap的各方优点,偶的“点金项目细化分包管理平台”决定采用它。但在使用中遇到了一些问题,比如菜单的问题,这个菜单是用的一个JQuery的一个效果,点击后,所点击的链接处的class要加active,以标明哪里点击了,高亮表现,并且该链接的上级菜单项也会高亮(如果菜单项仅为一级时,其点击后亦高亮),如果采用iframe的方式,在一个页面中写JQ是能完成的,但会丧失bootstrap自动排版的特性。所以还是要在点击后跳转不同的页面的方式来处理,见过用JS来实现的,这里用PHP实现,先定义一个菜单数组(如果有需求写在数据表里也可以),这个菜单数级分两级,一级为一级菜单项,二级为一级菜单项对应的二级菜单项,通过KEY来标识,二级菜单里的LINK是指的页面中的链接如果点击了之后仍然需求将该二级菜单项及其所在的一级菜单项至为ACTIVE的CLASS。具体见下方的运行效果及代码(此代码未经过优化,只是简单实现,应该还有更好的写法):

<?php

function checkstr($beinclude,$uri){
$tmparray = explode($uri,$beinclude);
if(count($tmparray)>1){
return true;
} else{
return false;
}
} function outputmenu($uri,$useremail)
{
$data = array(
'1' =>array('name'=>'看板 Dashboard','icon'=>'iconfa-laptop','url'=>'dashboard'),
'2' =>array('name'=>'全站项目','icon'=>'iconfa-book','url'=>''),
'3' =>array('name'=>'我的项目 Site Project','icon'=>'iconfa-pencil"','url' =>''),
'4'=>array('name'=>'我的接单 All Project','icon'=>'iconfa-briefcase','url' => ''),
'5'=>array('name'=>'我的管理 Request','icon'=>'iconfa-user','url'=>''),
'6'=>array('name'=>'站内服务','icon'=>'iconfa-th-list','url'=>''),
'7'=>array('name'=>'需知及帮助','icon'=>'iconfa-envelope','url'=>''),
'8'=>array('name'=>'Admin 管理入口','icon'=>'iconfa-wrench','url'=>''),
); $menulst = array(
'1'=>array(array('name'=>'','icon'=>'','url'=>''),),
'2'=>array(
array('name'=>'项目总览 All Projects','icon'=>'','url'=>'project',
'link'=>array('project/detail','modules/modlst','','')),//link为打开页面中的链接
array('name'=>'最新需求列表 Request','icon'=>'','url'=>'request',
'link'=>array('request/viewdetail','request/reqinitlst')),
array('name'=>'总体设计招揽','icon'=>'','url'=>'222','link'=>array()),
array('name'=>'详细设计招揽','icon'=>'','url'=>'333','link'=>array()),
array('name'=>'开发招揽','icon'=>'','url'=>'444','link'=>array()),
array('name'=>'测试招揽','icon'=>'','url'=>'555','link'=>array()),
array('name'=>'排名榜单','icon'=>'','url'=>'666','link'=>array()),
),
.....................................//自己定义
'8'=>array(
array('name'=>'项目维护 Maintenance','icon'=>'','url'=>'','link'=>array()),
array('name'=>'发包方合同管理 Contracts','icon'=>'','url'=>'','link'=>array()),
), );
foreach ($data as $key => $row)
{
if ($useremail != 'admin' AND $key == '8' )
break;//如果用户名不为admin并且循环至第8个主导航链接时直接退出 //当一级菜单项下有子菜单项时
if ($row['url'] == "")
{
//做一次循环,如果二级菜单的链接被点击,就打在一级菜单上active和display标志
$flag1 = 0;
foreach ($menulst[$key] as $i=>$val)
{
//当二级菜单项中的URL和当前点击的一致时
if (strcmp($val['url'],$uri) == 0)
{
$flag1 = 1;
break;
}
} //再做一次循环,如果二级链接的页面中的链接被点击,即和URI相同时,做标记
$flag2 = 0;
foreach ($menulst[$key] as $i=>$val)
{
$arrlength=count($val['link']);
for($x = 0; $x < $arrlength; $x++)
{
//echo stripos($uri,$val['link'][$x])."<br/>";
if (stripos($uri,$val['link'][$x]) !== false)
{
$flag2 = 1;
break;
}
}
} if ($flag1 == 1 || $flag2 == 1)
{
echo "<li class=\"dropdown active\"><a href=\"\"><span class=\"".$row['icon']."\"></span>".$row['name']."</a>";
echo "<ul style=\"display: block\">";
}
else
{
echo "<li class=\"dropdown\"><a href=\"\"><span class=\"".$row['icon']."\"></span>".$row['name']."</a>";
echo "<ul>";
} foreach ($menulst[$key] as $i=>$val)
{
//如果二级页面中链接包含在URI中,就将其二级链接中加Active
$flag3 = 0;
$arrlength = count($val['link']);
for($x = 0; $x < $arrlength; $x++)
{
//echo stripos($uri,$val['link'][$x])."<br/>";
if (stripos($uri,$val['link'][$x]) !== false)
{
$flag3 = 1;
break;
}
} if (strcmp($val['url'],$uri) == 0 || $flag3 == 1 )
{
echo "<li class='active'><a href=\"".base_url()."index.php/".$val['url']."\">".$val['name']."</a></li>";
}
else
{
/* //如果传值中包含点击的二级页面链接时
$arrlength=count($val['link']);
$flag3 = 0;
for($x = 0;$x < $arrlength; $x++)
{
if (strpos($val['link'][$x],$uri) == 0 )
{
//echo "<li class='active'><a href=\"".base_url()."index.php/".$val['url']."\">".$val['name']."</a></li>";
$flag3 = 1;
//echo "val:".$val['link'][$x]."<br/>";
//echo "uri:".$uri."<br/>";
break;
}
} */
//if ($flag3 == 0)
echo "<li><a href=\"".base_url()."index.php/".$val['url']."\">".$val['name']."</a></li>";
}
}
echo "</ul></li>";
}
else
{
//当有且仅有一级菜单项时,比对链接和传值
if (strcmp($row['url'],$uri) == 0)
{
echo "<li class=\"active\"><a href=\"".base_url()."index.php/".$row['url']."\"><span class=\"".$row['icon']."\"></span>".$row['name']."</a></li>";
}
else
{
echo "<li><a href=\"".base_url()."index.php/".$row['url']."\"><span class=\"".$row['icon']."\"></span>".$row['name']."</a></li>";
}
}
//echo "<br/>".$row['url']."<br/>"; }//foreachEnd /*
* 做循环输出,根据传入的$url给第一级array加active和其本身加active的class
*/
// $json_str=json_encode($tmparr); // foreach($data as $key=>$value)
// {
// $i = 1;
// foreach($value as $key1=>$value1)
// {
// //如果为第一级且仅有一级
// if (count($value) == 1)
// {
// if (strpos($value1,$uri))
// {
// echo "<li><a href=\"".base_url()."index.php/".$value1."\"><span class=\"iconfa-laptop\"></span>".$key1."</a></li>";
// }
// else
// {
// echo "<li class=\"active\"><a href=\"".base_url()."index.php/".$value1."\"><span class=\"iconfa-laptop\"></span>".$key1."</a></li>";
// }
// }
// else//如果为多级时
// {
// if ($i == 1)
// echo "<li class=\"dropdown \" id=\"allsiteproject\"><a href=\"\"><span class=\"iconfa-book\"></span>".$key1."</a><ul style=\"\">";
// }
// $i++;
// }
// } }

最新文章

  1. Html5 布局方式
  2. (转)Oracle 获取上周一到周末日期的查询sql语句
  3. java知识点
  4. HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
  5. springMVC系统异常处理及自定异常处理
  6. centos更改默认语言
  7. 基于Web的数据推送技术(转)
  8. gb2312和UTF-8的区别
  9. windows下nginx以服务自启动
  10. 屏蔽全部统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法
  11. Cmake ,Out of Source Build
  12. centos 磁盘扩容,新建lv
  13. 平原绫香 Hirahara Ayaka-Jupiter
  14. 日志分析工具-ApexSQL介绍
  15. Django资源
  16. WPF自学入门(七)WPF 初识Binding
  17. 信息学奥赛辅导经验谈 &amp; 问题教学法中的学生思维能力培养
  18. 卡方分布(Chi-Square Distribution):
  19. c# 设置MdiClient窗体的背景图片
  20. java ArrayList去重

热门文章

  1. notepad++之TextFX插件
  2. [转载]SAP BASIS学习手册
  3. 支持新版chrome,用webstorm编译形成css和sourcemap,调试sass和less源文件(转)
  4. AngularJS directive入门例子
  5. 经验分享:使用 Restyle.js 简化 CSS 预处理
  6. 原创:ASP.Net状态管理读书笔记--思维导图
  7. FZU 2090 旅行社的烦恼 floyd 求无向图最小环
  8. sp转dp dp转px
  9. Redis persistence demystified - part 2
  10. [Jquery]tab页面切换效果