标签:
联动菜单,首先给你看看前端是怎么写的:
1 <div id="newCat"> 2 <div class="all_type" id="allGoogsCat">所有商品分类</div> 3 4 <div class="spfl-warp <?php if(CONTROLLER_NAME != ‘Index‘ || ACTION_NAME != ‘index‘){echo ‘hide‘;} ?> "> 5 <div class="index-spfl-left" id="divCatList"> 6 <ul> 7 <foreach name="category_menu" key="one" item="v"> 8 <li class="li{$one+1}"> 9 <span><em></em> 10 <a href="{:U(‘Category/index‘,array(‘id‘=>$v[‘category_id‘],‘level‘=>1))}">{$v.category_name}</a> 11 </span> 12 <div class="div none"> 13 <foreach name="v[‘childs‘]" key="two" item="v2"> 14 <dl> 15 <dt> 16 <a href="{:U(‘Category/index‘,array(‘id‘=>$v2[‘category_id‘],‘level‘=>2))}">{$v2.category_name}</a> 17 </dt> 18 <dd class="fl"> 19 <foreach name="v2[‘childs‘]" item="v3"> 20 <a href="{:U(‘Category/index‘,array(‘id‘=>$v3[‘category_id‘],‘level‘=>3))}"> 21 {$v3.category_name} 22 </a> 23 </foreach> 24 </dd> 25 <div class="cl"></div> 26 </dl> 27 </foreach> 28 </div> 29 </li> 30 </foreach> 31 </ul> 32 </div> 33 </div> 34 </div> 35 36 <script type="text/javascript"> 37 <?php if(CONTROLLER_NAME != ‘Index‘ || ACTION_NAME != ‘index‘){ ?> 38 //商品分类鼠标滑过 39 function spflHover() { 40 $(".index-spfl-left ul li").live("mouseover", function () { 41 $(this).addClass("active").siblings().removeClass("active"); 42 $(".index-spfl-left").find(".div").hide(); 43 $(this).find(".div").show(); 44 }).live("mouseout", function () { 45 $(this).removeClass("active"); 46 $(".index-spfl-left").find(".div").hide(); 47 $(this).find(".div").hide(); 48 }); 49 //鼠标滑过分类显示 50 $("#newCat").mouseover(function () { 51 $(".spfl-warp").show(); 52 }).mouseout(function () { 53 if ($("#ismain").val() == "1") { 54 $(".spfl-warp").show(); 55 } else { 56 $(".spfl-warp").hide(); 57 } 58 }) 59 } 60 spflHover(); 61 <?php } ?> 62 </script>
看到没有,其实里面的一级菜单对应二级菜单都是在同一个li里面的,li里面的二级三级呢,都是放在dl的dt和dd标签里面;
然后现在我们看看取出来的category_menu,什么样的数据:
1 Array 2 ( 3 [0] => Array 4 ( 5 [category_id] => 84 6 [category_name] => 家装主材 7 [parent_id] => 0 8 [listorder] => 200 9 [display] => 1 10 [childs] => Array 11 ( 12 [0] => Array 13 ( 14 [category_id] => 85 15 [category_name] => 厨卫 16 [parent_id] => 84 17 [listorder] => 200 18 [display] => 1 19 [childs] => Array 20 ( 21 [0] => Array 22 ( 23 [category_id] => 99 24 [category_name] => 厨盆/水槽 25 [parent_id] => 85 26 [listorder] => 200 27 [display] => 1 28 [childs] => Array 29 ( 30 ) 31 32 ) 33 34 [1] => Array 35 ( 36 [category_id] => 98 37 [category_name] => 卫浴配件 38 [parent_id] => 85 39 [listorder] => 200 40 [display] => 1 41 [childs] => Array 42 ( 43 ) 44 45 ) 46 47 [2] => Array 48 ( 49 [category_id] => 97 50 [category_name] => 卫浴龙头 51 [parent_id] => 85 52 [listorder] => 200 53 [display] => 1 54 [childs] => Array 55 ( 56 ) 57 58 ) 59 60 [3] => Array 61 ( 62 [category_id] => 96 63 [category_name] => 龙头 64 [parent_id] => 85 65 [listorder] => 200 66 [display] => 1 67 [childs] => Array 68 ( 69 ) 70 71 ) 72 73 [4] => Array 74 ( 75 [category_id] => 95 76 [category_name] => 淋浴房 77 [parent_id] => 85 78 [listorder] => 200 79 [display] => 1 80 [childs] => Array 81 ( 82 ) 83 84 ) 85 86 [5] => Array 87 ( 88 [category_id] => 94 89 [category_name] => 智能坐便器 90 [parent_id] => 85 91 [listorder] => 200 92 [display] => 1 93 [childs] => Array 94 ( 95 ) 96 97 ) 98 99 [6] => Array 100 ( 101 [category_id] => 93 102 [category_name] => 浴室柜 103 [parent_id] => 85 104 [listorder] => 200 105 [display] => 1 106 [childs] => Array 107 ( 108 ) 109 110 ) 111 112 [7] => Array 113 ( 114 [category_id] => 92 115 [category_name] => 坐便器 116 [parent_id] => 85 117 [listorder] => 200 118 [display] => 1 119 [childs] => Array 120 ( 121 ) 122 123 ) 124 125 [8] => Array 126 ( 127 [category_id] => 91 128 [category_name] => 浴霸 129 [parent_id] => 85 130 [listorder] => 200 131 [display] => 1 132 [childs] => Array 133 ( 134 ) 135 136 ) 137 138 [9] => Array 139 ( 140 [category_id] => 90 141 [category_name] => 地漏 142 [parent_id] => 85 143 [listorder] => 200 144 [display] => 1 145 [childs] => Array 146 ( 147 ) 148 149 ) 150 151 [10] => Array 152 ( 153 [category_id] => 89 154 [category_name] => 坐便器盖板 155 [parent_id] => 85 156 [listorder] => 200 157 [display] => 1 158 [childs] => Array 159 ( 160 ) 161 162 ) 163 164 [11] => Array 165 ( 166 [category_id] => 88 167 [category_name] => 洗面盆 168 [parent_id] => 85 169 [listorder] => 200 170 [display] => 1 171 [childs] => Array 172 ( 173 ) 174 175 ) 176 177 [12] => Array 178 ( 179 [category_id] => 87 180 [category_name] => 角阀 181 [parent_id] => 85 182 [listorder] => 200 183 [display] => 1 184 [childs] => Array 185 ( 186 ) 187 188 ) 189 190 [13] => Array 191 ( 192 [category_id] => 100 193 [category_name] => 卫浴五金 194 [parent_id] => 85 195 [listorder] => 200 196 [display] => 1 197 [childs] => Array 198 ( 199 ) 200 201 ) 202 203 [14] => Array 204 ( 205 [category_id] => 101 206 [category_name] => 厨房挂件/配件 207 [parent_id] => 85 208 [listorder] => 200 209 [display] => 1 210 [childs] => Array 211 ( 212 ) 213 214 ) 215 216 [15] => Array 217 ( 218 [category_id] => 86 219 [category_name] => 淋浴花洒 220 [parent_id] => 85 221 [listorder] => 200 222 [display] => 1 223 [childs] => Array 224 ( 225 ) 226 227 ) 228 229 ) 230 231 ) 232 233 [1] => Array 234 ( 235 [category_id] => 126 236 [category_name] => 墙纸 237 [parent_id] => 84 238 [listorder] => 200 239 [display] => 1 240 [childs] => Array 241 ( 242 [0] => Array 243 ( 244 [category_id] => 130 245 [category_name] => 3D墙纸 246 [parent_id] => 126 247 [listorder] => 200 248 [display] => 1 249 [childs] => Array 250 ( 251 ) 252 253 ) 254 255 [1] => Array 256 ( 257 [category_id] => 129 258 [category_name] => 纯纸墙纸 259 [parent_id] => 126 260 [listorder] => 200 261 [display] => 1 262 [childs] => Array 263 ( 264 ) 265 266 ) 267 268 [2] => Array 269 ( 270 [category_id] => 128 271 [category_name] => PVC墙纸 272 [parent_id] => 126 273 [listorder] => 200 274 [display] => 1 275 [childs] => Array 276 ( 277 ) 278 279 )
然后,数据表是怎么样的数据呢:
1 Array 2 ( 3 [0] => Array 4 ( 5 [category_id] => 211 6 [category_name] => 鞋柜 7 [parent_id] => 31 8 [listorder] => 200 9 [display] => 1 10 ) 11 12 [1] => Array 13 ( 14 [category_id] => 194 15 [category_name] => 相框/照片墙 16 [parent_id] => 189 17 [listorder] => 200 18 [display] => 1 19 ) 20 21 [2] => Array 22 ( 23 [category_id] => 193 24 [category_name] => 帘艺隔断 25 [parent_id] => 189 26 [listorder] => 200 27 [display] => 1 28 ) 29 30 [3] => Array 31 ( 32 [category_id] => 192 33 [category_name] => 沙发垫套/椅垫 34 [parent_id] => 189 35 [listorder] => 200 36 [display] => 1 37 ) 38 39 [4] => Array 40 ( 41 [category_id] => 191 42 [category_name] => 地毯地垫 43 [parent_id] => 189 44 [listorder] => 200 45 [display] => 1 46 ) 47 48 [5] => Array 49 ( 50 [category_id] => 190 51 [category_name] => 桌布/罩件 52 [parent_id] => 189 53 [listorder] => 200 54 [display] => 1 55 )
数据表数据是酱紫的;
然后,你能写出那个处理数组的方法吗,给你原数据,然后你用迭代处理成你想要的数据,不用太多,6行代码左右,你OK?
代码拷贝多了,人也就变傻了,知不知道???
1 //把栏目分组,以多维数组形式 2 public function group_category($id = 0) 3 { 4 $list=$this->where(‘display = 1‘)->order(‘listorder asc‘)->select(); 5 $tmp = array(); 6 foreach($list as $v){ 7 if($v[‘parent_id‘] == $id){ 8 $v[‘childs‘] = $this->group_category($v[‘category_id‘]); 9 $tmp[] = $v; 10 } 11 } 12 return $tmp; 13 }
为什么不把SQL语句放在外面作为参数传递进去函数groud_category函数呢?这样就不用老是查数据库啊。
无非也就是将父ID为0开始查询,然后对其子栏目的id在做为父ID进行查询,查询出属于其id的子栏目、、、
标签:
原文地址:http://www.cnblogs.com/haveadream435/p/5769478.html