:::

5-3-2 讓樣板檔接收二維陣列

  1. 修改 index_content.tpl,將資料套入樣板
    {foreach $all_news as $news}
        <div class="row">
            <div class="col-md-9">
                <h3><a href="index.php?op=show&id={$news.id}">{$news.title}</a></h3>
                <p>{$news.author}</p>
                <p>{$news.date} 點閱數:{$news.views}</p>
                <p>{$news.content|truncate:180:"..."}</p>
            </div>
            <div class="col-md-3">
                {if is_file(reset($news.files))}
                    <img src="{reset($news.files)}" alt="" class="img-thumbnail"
                    style="object-fit: cover; width: 100%; height: 200px;">
                {else}
                    <img src="https://picsum.photos/seed/picsum/400/400" alt="" class="img-thumbnail"
                    style="object-fit: cover; width: 100%; height: 200px;">
                {/if}
            </div>
        </div>
    {/foreach}

     

  2. 先用 foreach 迴圈將 $all_news 的內容一筆一筆抽出,抽出後的 $news 就是一維陣列,也就是一筆文章資料
  3. 將所有要呈現的部份都改成 {$news.欄位名稱}
  4. 我們順便在標題及縮圖部份,將連結路徑填上,如此便能連到單一文章頁面
    <h3><a href="index.php?op=show&id={$news.id}">{$news.title}</a></h3>
    1. 其中 op 代表讓程式操作的下一個動作(自行定義的)
    2. id 則是文章編號
    3. 這是 get 的傳遞方法,用 ? 接參數,多組參數間用 & 連接起來
       
  5. 文章內容只要載入180個字左右,所以用Smarty提供的 truncate 方法來擷取之
    <p>{$news.content|truncate:180:"..."}</p>

     

  6. 縮圖的部份,用 reset($news.files) 可以取出陣列的第一筆資料的值,即圖檔路徑。
  7. 我們先用 is_file(reset($news.files)) 判斷圖檔路徑是否真有個檔案?若有,則顯示之。若無利用假圖(https://picsum.photos/)來取代之。
    {if is_file(reset($news.files))}
        <img src="{reset($news.files)}" alt="" class="img-thumbnail"
        style="object-fit: cover; width: 100%; height: 200px;">
    {else}
        <img src="https://picsum.photos/seed/picsum/400/400" alt="" class="img-thumbnail"
        style="object-fit: cover; width: 100%; height: 200px;">
    {/if}

    reset()is_file() 其實都是PHP的函數,reset() 用來取得陣列第一個元素的值; is_file() 則用來判斷是否是一個檔案。

  8. 如此便初步完成資料的樣板套用!

 


:::

書籍目錄

展開 | 闔起

http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1808

計數器

今天: 1509150915091509
昨天: 1416141614161416
總計: 7340156734015673401567340156734015673401567340156