本文實(shí)例講述了thinkphp實(shí)現(xiàn)的聯(lián)動(dòng)菜單功能。分享給大家供大家參考,具體如下:
聯(lián)動(dòng)菜單,首先給你看看前端是怎么寫的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
<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' ){ ?> //商品分類鼠標(biāo)滑過 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(); }); //鼠標(biāo)滑過分類顯示 $( "#newcat" ).mouseover( function () { $( ".spfl-warp" ).show(); }).mouseout( function () { if ($( "#ismain" ).val() == "1" ) { $( ".spfl-warp" ).show(); } else { $( ".spfl-warp" ).hide(); } }) } spflhover(); <?php } ?> </script> |
看到?jīng)]有,其實(shí)里面的一級(jí)菜單對(duì)應(yīng)二級(jí)菜單都是在同一個(gè)li里面的,li里面的二級(jí)三級(jí)呢,都是放在dl的dt和dd標(biāo)簽里面;
然后現(xiàn)在我們看看取出來的category_menu,什么樣的數(shù)據(jù):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
array ( [0] => array ( [category_id] => 84 [category_name] => 家裝主材 [parent_id] => 0 [listorder] => 200 [display] => 1 [childs] => array ( [0] => array ( [category_id] => 85 [category_name] => 廚衛(wèi) [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] => 衛(wèi)浴配件 [parent_id] => 85 [listorder] => 200 [display] => 1 [childs] => array ( ) ) [2] => array ( [category_id] => 97 [category_name] => 衛(wèi)浴龍頭 [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] => 衛(wèi)浴五金 [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 ( ) ) |
然后,數(shù)據(jù)表是怎么樣的數(shù)據(jù)呢:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
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] => 沙發(fā)墊套/椅墊 [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 ) |
數(shù)據(jù)表數(shù)據(jù)是醬紫的;
然后,你能寫出那個(gè)處理數(shù)組的方法嗎,給你原數(shù)據(jù),然后你用迭代處理成你想要的數(shù)據(jù),不用太多,6行代碼左右,你ok?
代碼拷貝多了,人也就變傻了,知不知道???
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//把欄目分組,以多維數(shù)組形式 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語句放在外面作為參數(shù)傳遞進(jìn)去函數(shù)groud_category函數(shù)呢?這樣就不用老是查數(shù)據(jù)庫啊。
無非也就是將父id為0開始查詢,然后對(duì)其子欄目的id在做為父id進(jìn)行查詢,查詢出屬于其id的子欄目
希望本文所述對(duì)大家基于thinkphp框架的php程序設(shè)計(jì)有所幫助。