2011-05-03 28 views
2

我正在致力於一個網站,導航中最多可以有3個層級。在頂端標題下面是 使用CodeIgniter進行高效網站導航

在過去,左

  • 可選的子子導航
  • 子導航

    • 主要部分的時候,我滾我自己用PHP ,我將創建一個文件navigation.php,其中包含所有節和子節的類和數組,以及用於輸出導航的幾個函數。我會在網站的每個頁面上設置變量(current_section ='',current_sub_section =''),以便導航功能知道要突出顯示的內容。

      在CodeIgniter中,我想知道這是否仍然是一個很好的使用方法?

  • 回答

    0

    最好的辦法是使用3點不同的看法,頂視圖,左視圖和仰視圖,然後在你的控制器,你可以通過apporiate瓦爾每個視圖,所以你會做類似

    $top[current] = something; 
    $top[current_sub] = somethingelse; 
    $this->load->view('top_nav', $top); 
    $this->load->view('left_nav',$left); 
    ... 
    

    然後在您的視圖中,您可以處理傳遞給它們的變量。

    6

    我打算假設你的主要導航部分幾乎直接映射到你的控制器,即。

    Home | News | Events

    在你的頂欄,映射到:

    • /家
    • /新聞
    • /事件

    如果是這樣的話,你已經有了一個簡單的選擇你的導航數組的方法。

    您可以在控制器構造函數&中放置一系列導航項鍊接對,並將它們傳遞給輸出中的子視圖。

    例子:

    class HomeController extends CI_Controller 
    { 
        private $nav; 
        public function __construct() 
        { 
        parent::__construct(); 
    
        $this->nav = array(
         array('Browse', site_url('news/browse')), 
         array('Edit', site_url('news/edit')) 
        ); 
    
        $this->load->vars(array('NavigationArray' => $this->nav)); 
        } 
    
        // ... 
    
    } 
    

    現在你做了什麼是自動註冊在所有的意見$NavigationArray包含的顯示名稱的數組變量 - 鏈接對。

    然後,您可以加載一個基本的導航視圖,從該變量中構建您的subnav(因爲它隨處可用)。

    <? foreach($NavigationArray as $entry): ?> 
        <a href="<?=$entry[1];?>"><?=$entry[0];?></a> 
    <? endforeach; ?> 
    

    其下方你可以找一個子導航陣列是否存在等,你可以在你的控制器可選設置,或任何(你提到的第三個可選的資產淨值約)

    <? if(exists($SubNavigationArray)): ?> 
        <? foreach($SubNavigationArray as $entry): ?> 
        <a href="<?=$entry[1];?>"><?=$entry[0];?></a> 
        <? endforeach; ?> 
    <? endif; ?> 
    

    請請記住,這個例子是非常基本的,但這通常是我們傳遞數據的方式,我不希望你把全局變量放在任何地方,並嘗試排隊。簡單地將變量加載到視圖引擎中,當你去渲染你的視圖/子視圖時,它們將是可用的。

    這樣控制器控件什麼導航項目顯示。

    還要注意:

    你也可以傳遞變量,而不是明確地相信他們會在你的考慮範圍存在的。

    $this->load->view('myview', array('NavigationArray' => $this->nav)); 
    

    希望這會有所幫助。

    2

    這裏基本上我做什麼,以確定笨「活動」鏈接:

    $active_class = ''; 
    $url = site_url('your/link/url'); 
    
    if ($url == current_url()) 
    { 
        $active_class = ' class="active"'; 
    } 
    
    $link = '<a href="'.$url.'"'.$active_class.'>Link Text</a>"; 
    

    請記住,這是一個基本的例子,通常在一個循環中運行。最好的方式取決於你的導航數組的樣子,以及你認爲「活躍」(你想「激活」href部分匹配url的鏈接)。