이 글에서는 thinkPHP에서 구현한 연동 메뉴 기능을 주로 소개하고, thinkPHP 연동 메뉴의 구현 단계와 구체적인 동작 기법을 예시로 분석해 봤습니다. 도움이 필요한 친구들이 참고할 수 있습니다
이 글에서는 thinkPHP에서 구현한 연동 메뉴 기능을 설명합니다. 예제를 통해 thinkPHP를 살펴보세요. 참고를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
링크된 메뉴, 먼저 프런트 엔드에 어떻게 쓰여 있는지 보여드리겠습니다.
<p id="newCat"> <p class="all_type" id="allGoogsCat">所有商品分类</p> <p class="spfl-warp <?php if(CONTROLLER_NAME != 'Index' || ACTION_NAME != 'index'){echo 'hide';} ?> "> <p class="index-spfl-left" id="pCatList"> <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> <p class="p 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> <p class="cl"></p> </dl> </foreach> </p> </li> </foreach> </ul> </p> </p> </p> <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(".p").hide(); $(this).find(".p").show(); }).live("mouseout", function () { $(this).removeClass("active"); $(".index-spfl-left").find(".p").hide(); $(this).find(".p").hide(); }); //鼠标滑过分类显示 $("#newCat").mouseover(function () { $(".spfl-warp").show(); }).mouseout(function () { if ($("#ismain").val() == "1") { $(".spfl-warp").show(); } else { $(".spfl-warp").hide(); } }) } spflHover(); <?php } ?> </script>
저거 실제로 보셨나요? , 내부의 첫 번째 수준 메뉴는 두 번째 수준 메뉴에 해당합니다. 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줄 정도 입니다. 괜찮나요?
코드를 너무 많이 복사하면 사람들이 바보가 되는 거 아시죠? ? ?
//把栏目分组,以多维数组形式 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에 속한 하위 컬럼을 쿼리하는 것에 불과합니다
위 내용은 전체 내용입니다 이 기사를 읽어주신 모든 분들께 감사드립니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트에 주목하세요!
관련 권장사항:
위 내용은 thinkPHP는 연결 메뉴 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!