我正在致力於一個網站,導航中最多可以有3個層級。在頂端標題下面是 使用CodeIgniter進行高效網站導航
在過去,左
- 主要部分的時候,我滾我自己用PHP ,我將創建一個文件navigation.php,其中包含所有節和子節的類和數組,以及用於輸出導航的幾個函數。我會在網站的每個頁面上設置變量(current_section ='',current_sub_section =''),以便導航功能知道要突出顯示的內容。
在CodeIgniter中,我想知道這是否仍然是一個很好的使用方法?
我正在致力於一個網站,導航中最多可以有3個層級。在頂端標題下面是 使用CodeIgniter進行高效網站導航
在過去,左
在CodeIgniter中,我想知道這是否仍然是一個很好的使用方法?
最好的辦法是使用3點不同的看法,頂視圖,左視圖和仰視圖,然後在你的控制器,你可以通過apporiate瓦爾每個視圖,所以你會做類似
$top[current] = something;
$top[current_sub] = somethingelse;
$this->load->view('top_nav', $top);
$this->load->view('left_nav',$left);
...
然後在您的視圖中,您可以處理傳遞給它們的變量。
我打算假設你的主要導航部分幾乎直接映射到你的控制器,即。
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));
希望這會有所幫助。
這裏基本上我做什麼,以確定笨「活動」鏈接:
$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的鏈接)。