本文实例讲述了thinkPHP实现的联动菜单功能。分享给大家供大家参考,具体如下:

联动菜单,首先给你看看前端是怎么写的:
<div id="newCat">
<div class="all_type" id="allGoogsCat">所有商品分类</div>
<div class="spfl-warp <?php if(CONTROLLER_NAME != 'Index' || ACTION_NAME != 'index'){echo 'hide';} ?> ">
<div class="index-spfl-left" id="divCatList">
<ul>
<foreach name="category_menu" key="one" item="v">
<li class="li{$one+1}">
<span><em></em>
<a href="{:U('Category/index',array('id'=>$v['category_id'],'level'=>1))}" rel="external nofollow" >{$v.category_name}</a>
</span>
<div class="div none">
<foreach name="v['childs']" key="two" item="v2">
<dl>
<dt>
<a href="{:U('Category/index',array('id'=>$v2['category_id'],'level'=>2))}" rel="external nofollow" >{$v2.category_name}</a>
</dt>
<dd class="fl">
<foreach name="v2['childs']" item="v3">
<a href="{:U('Category/index',array('id'=>$v3['category_id'],'level'=>3))}" rel="external nofollow" >
{$v3.category_name}
</a>
</foreach>
</dd>
<div class="cl"></div>
</dl>
</foreach>
</div>
</li>
</foreach>
</ul>
</div>
</div>
</div>
<script type="text/javascript">
<?php if(CONTROLLER_NAME != 'Index' || ACTION_NAME != 'index'){ ?>
//商品分类鼠标滑过
function spflHover() {
$(".index-spfl-left ul li").live("mouseover", function () {
$(this).addClass("active").siblings().removeClass("active");
$(".index-spfl-left").find(".div").hide();
$(this).find(".div").show();
}).live("mouseout", function () {
$(this).removeClass("active");
$(".index-spfl-left").find(".div").hide();
$(this).find(".div").hide();
});
//鼠标滑过分类显示
$("#newCat").mouseover(function () {
$(".spfl-warp").show();
}).mouseout(function () {
if ($("#ismain").val() == "1") {
$(".spfl-warp").show();
} else {
$(".spfl-warp").hide();
}
})
}
spflHover();
<?php } ?>
</script>
看到没有,其实里面的一级菜单对应二级菜单都是在同一个li里面的,li里面的二级三级呢,都是放在dl的dt和dd标签里面;
然后现在我们看看取出来的category_menu,什么样的数据:
Array
(
[0] => Array
(
[category_id] => 84
[category_name] => 家装主材
[parent_id] => 0
[listorder] => 200
[display] => 1
[childs] => Array
(
[0] => Array
(
[category_id] => 85
[category_name] => 厨卫
[parent_id] => 84
[listorder] => 200
[display] => 1
[childs] => Array
(
[0] => Array
(
[category_id] => 99
[category_name] => 厨盆/水槽
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[1] => Array
(
[category_id] => 98
[category_name] => 卫浴配件
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[2] => Array
(
[category_id] => 97
[category_name] => 卫浴龙头
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[3] => Array
(
[category_id] => 96
[category_name] => 龙头
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[4] => Array
(
[category_id] => 95
[category_name] => 淋浴房
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[5] => Array
(
[category_id] => 94
[category_name] => 智能坐便器
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[6] => Array
(
[category_id] => 93
[category_name] => 浴室柜
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[7] => Array
(
[category_id] => 92
[category_name] => 坐便器
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[8] => Array
(
[category_id] => 91
[category_name] => 浴霸
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[9] => Array
(
[category_id] => 90
[category_name] => 地漏
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[10] => Array
(
[category_id] => 89
[category_name] => 坐便器盖板
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[11] => Array
(
[category_id] => 88
[category_name] => 洗面盆
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[12] => Array
(
[category_id] => 87
[category_name] => 角阀
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[13] => Array
(
[category_id] => 100
[category_name] => 卫浴五金
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[14] => Array
(
[category_id] => 101
[category_name] => 厨房挂件/配件
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[15] => Array
(
[category_id] => 86
[category_name] => 淋浴花洒
[parent_id] => 85
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
)
)
[1] => Array
(
[category_id] => 126
[category_name] => 墙纸
[parent_id] => 84
[listorder] => 200
[display] => 1
[childs] => Array
(
[0] => Array
(
[category_id] => 130
[category_name] => 3D墙纸
[parent_id] => 126
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[1] => Array
(
[category_id] => 129
[category_name] => 纯纸墙纸
[parent_id] => 126
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
[2] => Array
(
[category_id] => 128
[category_name] => PVC墙纸
[parent_id] => 126
[listorder] => 200
[display] => 1
[childs] => Array
(
)
)
然后,数据表是怎么样的数据呢:
Array
(
[0] => Array
(
[category_id] => 211
[category_name] => 鞋柜
[parent_id] => 31
[listorder] => 200
[display] => 1
)
[1] => Array
(
[category_id] => 194
[category_name] => 相框/照片墙
[parent_id] => 189
[listorder] => 200
[display] => 1
)
[2] => Array
(
[category_id] => 193
[category_name] => 帘艺隔断
[parent_id] => 189
[listorder] => 200
[display] => 1
)
[3] => Array
(
[category_id] => 192
[category_name] => 沙发垫套/椅垫
[parent_id] => 189
[listorder] => 200
[display] => 1
)
[4] => Array
(
[category_id] => 191
[category_name] => 地毯地垫
[parent_id] => 189
[listorder] => 200
[display] => 1
)
[5] => Array
(
[category_id] => 190
[category_name] => 桌布/罩件
[parent_id] => 189
[listorder] => 200
[display] => 1
)
数据表数据是酱紫的;
然后,你能写出那个处理数组的方法吗,给你原数据,然后你用迭代处理成你想要的数据,不用太多,6行代码左右,你OK?
代码拷贝多了,人也就变傻了,知不知道???
//把栏目分组,以多维数组形式
public function group_category($id = 0)
{
$list=$this->where('display = 1')->order('listorder asc')->select();
$tmp = array();
foreach($list as $v){
if($v['parent_id'] == $id){
$v['childs'] = $this->group_category($v['category_id']);
$tmp[] = $v;
}
}
return $tmp;
}
为什么不把SQL语句放在外面作为参数传递进去函数groud_category函数呢?这样就不用老是查数据库啊。
无非也就是将父ID为0开始查询,然后对其子栏目的id在做为父ID进行查询,查询出属于其id的子栏目
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
# thinkPHP
# 联动菜单
# thinkphp实现面包屑导航(当前位置)例子分享
# ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
# thinkPHP基于ajax实现的菜单与分页示例
# ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
# ThinkPHP无限级分类原理实现留言与回复功能实例
# thinkphp实现无限分类(使用递归)
# ThinkPHP自动填充实现无限级分类的方法
# ThinkPHP实现递归无级分类——代码少
# 使用ThinkPHP的自动完成实现无限级分类实例详解
# tp5框架前台无限极导航菜单类实现方法分析
# 都是
# 放在
# 给你
# 鼠标
# 鞋柜
# 商品分类
# 多维
# 滑过
# 进阶
# 太多
# 相关内容
# 也就
# 是怎么
# 感兴趣
# 你能
# 给大家
# 你用
# 家装
# 不把
# 更多关于
相关文章:
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何快速搭建二级域名独立网站?
大连网站制作公司哪家好一点,大连买房网站哪个好?
学校建站服务器如何选型才能满足性能需求?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Python lxml的etree和ElementTree有什么区别
贸易公司网站制作流程,出口贸易网站设计怎么做?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何快速搭建响应式可视化网站?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
Swift开发中switch语句值绑定模式
免费ppt制作网站,有没有值得推荐的免费PPT网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何高效生成建站之星成品网站源码?
临沂网站制作公司有哪些,临沂第四中学官网?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
招贴海报怎么做,什么是海报招贴?
如何解决ASP生成WAP建站中文乱码问题?
建站之星安装失败:服务器环境不兼容?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何挑选优质建站一级代理提升网站排名?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
TestNG的testng.xml配置文件怎么写
在线教育网站制作平台,山西立德教育官网?
SQL查询语句优化的实用方法总结
如何通过虚拟主机快速完成网站搭建?
,网页ppt怎么弄成自己的ppt?
上海网站制作开发公司,上海买房比较好的网站有哪些?
Android滚轮选择时间控件使用详解
成都网站制作公司哪家好,四川省职工服务网是做什么用?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何彻底删除建站之星生成的Banner?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站之星ASP如何实现CMS高效搭建与安全管理?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
建站主机如何安装配置?新手必看操作指南
c++ stringstream用法详解_c++字符串与数字转换利器
如何有效防御Web建站篡改攻击?
建站之星如何修改网站生成路径?
如何将凡科建站内容保存为本地文件?
Bpmn 2.0的XML文件怎么画流程图
北京制作网站的公司,北京铁路集团官方网站?
如何安全更换建站之星模板并保留数据?
如何配置WinSCP新建站点的密钥验证步骤?
深圳网站制作培训,深圳哪些招聘网站比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。