:::
主內容區域
6. 讓導覽列有作用
一、加入分類設定方便日後調整
- 導覽列的選項目前是寫死的,但其實寫成活的更好,也就是可以方便的調整分類項目。
- 首先,我們可以在
config.php檔中新增分類的設定,如:// 分類設定 $categories = [ 1 => '校園日誌', 2 => '榮譽榜', 3 => '媒體新聞', ];其中索引就是我們存入資料庫的
category,也就是一個數字,這樣的好處是日後若想微調文字,就不用修改一大堆資料。
二、將分類設定送到樣板
- 由於導覽列、發布界面的樣板中都會用到該變數,所以,我們可以在
index.php及admin.php中,將之也送到樣板檔去。$smarty->assign('op', $op); $smarty->assign('categories', $categories); $smarty->display('index.tpl'); - 最後修改導覽列樣板
templates/index_nav.tpl,我們利用Smarty的{foreach}來將分類讀出,並將每個選項加上連結到index.php?category=分類編號,好讓index列表可以根據category來做文章的篩選:<ul class="navbar-nav me-auto mt-2 mt-lg-0"> {foreach $categories as $category_id => $category_title} <li class="nav-item"> <a class="nav-link" href="index.php?category={$category_id}">{$category_title}</a> </li> {/foreach} </ul> - 此時,只要導覽列有正確出現即可:

- 但目前點擊分類時,該分類並不會用比較亮的顏色呈現,所以,我們要加上
active的樣式給目前的選項,繼續修改templates/index_nav.tpl:<a class="nav-link {if isset($smarty.get.category) && $smarty.get.category==$category_id}active{/if}" href="index.php?category={$category_id}">{$category_title}</a>其中的
$smarty.get.category是 Smarty 的用法,也就是直接抓取用 get 傳遞的category變數(網址上的category變數) 來跟我們從{foreach}迴圈取出的分類編號比對,如果一致,就加上active樣式,如此,就完成了。不過要先用isset()來確定是否有該 get 變數,否則會有錯誤訊息出現喔。 - 看起來就正常了!

5-8 加入fancybox燈箱效果