:::
7-3 製作文章摘要
- 文章摘要通常就是擷取固定幾個自來當作摘要,因此,我們一樣請AI來製作:
請用PHP8設計一個函數,可以傳入大量字串,並傳回指定字數的字串,需能支援中英文。 - 得到的函數如下,請將之加入到
index.php的最後面:function truncate_string(string $string, int $length, string $append = '...'): string { // 如果字串長度小於或等於指定長度,直接返回原字串 if (mb_strlen($string, 'UTF-8') <= $length) { return $string; } // 使用 mb_substr 截取指定長度的字串 $truncated = mb_substr($string, 0, $length, 'UTF-8'); // 檢查最後一個字符是否為空白字符 $lastChar = mb_substr($truncated, -1, 1, 'UTF-8'); if (mb_strwidth($lastChar, 'UTF-8') === 0) { $truncated = mb_substr($truncated, 0, -1, 'UTF-8'); } // 添加省略號 return $truncated . $append; } - 接著修改
all()函數,多加一個$row['summary']的元素:function all(int $start = 0, int $limit = 10): array { global $pdo; ...略... while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ...略... $row['media_json'] = convertMediaToJson($row['media']); $row['main_image'] = array_key_first($row['media']); $row['thumb_image'] = reset($row['media']); $row['summary'] = truncate_string($row['news_content'], 200); $results[] = $row; } return $results; } - 最後修改
templates/main.tpl樣板檔,非第一則新聞時,其content值為$news.summary:{foreach $all_news as $key => $news} {if $key==0} {include file="article.tpl" slider=true title=$news.news_title date=$news.report_date school=$news.school_name count=$news.views author=$news.publisher content=$news.news_content link=$news.related_link thumb=""} {else} {include file="article.tpl" slider=false title=$news.news_title date=$news.report_date school=$news.school_name count=$news.views author=$news.publisher content=$news.summary link=$news.related_link thumb=$news.thumb_image} {/if} {/foreach} - 這樣就完成了!

- 我們還可以修改一下
templates/article.tpl,點標題連結就可以進入觀看該新聞:<article class="my-4"> {if $slider} {include file="slider.tpl"} {/if} <h2><a href="index.php?id={$news.id}" class="text-decoration-none">{$title}</a></h2> ...略... </article> - 如此,標題就可以點囉~

7-2 完成首頁輪播圖及新聞列表