菜單欄的設計與控制

    通常項目都有菜單導航部分,無限級菜單表的主要字段包括:(如今主流菜單的設計都是無限級分類,普通的導航欄分級的時候,只有一個分級對應一個分級)
    id 類別的id設計
    title  欄目標題
    pid   從屬id
    sort  排序
    hide  是否隱藏
   項目訪問的時候,菜單重組的邏輯包括:
   讀取全部pid=0的欄目(放入到網頁頂部,導航欄須要顯示的地方,根據hide和sort排序進行顯示)
   獲取當前的欄目(能夠根據訪問的url參數獲取到訪問的具體控制器,同時列表出來當前分支的全部子類和同類)
   講獲取到的子欄目放入一個child的數組裏面進行儲存,注入到視圖裏面,視圖能夠進行顯示。

   如下是一些代碼邏輯:(這裏用TP框架邏輯進行示例):
   1.讀取某個id的全部子類(主欄目下的子類)
     php

   function   getChild($pid) {    
        $res =  D('menu')->where("pid=$pid")->select();
         if(!count($res)) return false;
          return $res;
    }
         function  getAllChild($id) {
           $childArr= getChild($id);
            if($childArr)  {
              foreach($childArr as  $val) {
                          $childArr['child'][]=getAllChild($val['id']);
          }
          return  $childArr;
        }
     }

    2.根據某個id讀出其兄弟
      數組

   function  getBrothers($id) {
            $res = D('menu')->where("id=$id")->find();
        $brothers = D('menu')->where("pid={$res['pid']}"->select();
        return   $brothers;
     }

     3.讀取某個欄目的最終目錄
        框架

  function  getParents($id){
                  $res = D('menu')->where("id=$id")->find();
          $parent=D('menu')->where("pid={$res['pid']}")->find();
                  if($parent['id']!=0) {
                $parentId=getParents($parent['id']);
            }  else {
                         $parentId = $parent['id'];
            }
                return  $parentId;
        }
相關文章
相關標籤/搜索