:::

6. 讓導覽列有作用

一、加入分類設定方便日後調整

  1. 導覽列的選項目前是寫死的,但其實寫成活的更好,也就是可以方便的調整分類項目。
  2. 首先,我們可以在 config.php 檔中新增分類的設定,如:
    // 分類設定
    $categories = [
        1 => '校園日誌',
        2 => '榮譽榜',
        3 => '媒體新聞',
    ];
    

    其中索引就是我們存入資料庫的 category,也就是一個數字,這樣的好處是日後若想微調文字,就不用修改一大堆資料。

二、將分類設定送到樣板

  1. 由於導覽列、發布界面的樣板中都會用到該變數,所以,我們可以在 index.phpadmin.php 中,將之也送到樣板檔去。
    $smarty->assign('op', $op);
    $smarty->assign('categories', $categories);
    $smarty->display('index.tpl');

     

  2. 最後修改導覽列樣板 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>
  3. 此時,只要導覽列有正確出現即可:
  4. 但目前點擊分類時,該分類並不會用比較亮的顏色呈現,所以,我們要加上 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. 看起來就正常了!

     

:::

書籍目錄

展開 | 闔起

快速登入


https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D1827%26tbsn%3D52

計數器

今天: 5326532653265326
昨天: 2489248924892489
總計: 8027308802730880273088027308802730880273088027308