首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

讓 Smarty 更強大:自訂分頁插件與靜態頁緩存實戰

     編輯:PHP 相關知識

Smarty 作為經典 PHP 模板引擎,透過插件機制與編譯緩存特性,可大幅擴展功能。本文示範如何開發分頁插件、實現靜態頁緩存,並解析 Smarty 核心優勢。

一、開發分頁插件 function.page.php

將插件放入 plugins/ 目錄,模板中即可使用 {page row=10 now=5 href="..." first="首頁" prev="上一頁" next="下一頁" last="尾頁"} 語法。

插件核心邏輯

  • 參數:row 總筆數、now 當前頁、page 每頁顯示頁碼數、href 連結格式
  • 自動計算起始/結束頁碼,處理首尾頁邊界
  • 支援自訂首頁、上一頁、下一頁、尾頁文字

二、Smarty 自動生成靜態頁面

利用 cache_lifetime = -1(永不過期)搭配 fetch() 將編譯後的輸出寫入緩存目錄,再取得緩存檔名,即為靜態 HTML 檔案。

class template extends Smarty {
    function name($tpl_file, $cache_id=null, $compile_id=null) {
        // 取得緩存檔案名稱(不含路徑)
        return basename($this->_get_auto_filename($this->cache_dir, $tpl_file, 
            $this->_get_auto_id($cache_id, $compile_id)));
    }
}

$Smarty = new template;
$file_name = $Smarty->name('plugins.html', 'cache_name');
$Smarty->cache_lifetime = -1;
$Smarty->fetch('plugins.html', 'cache_name'); // 生成靜態檔

三、Smarty 核心特性回顧

特性說明
模板編譯模板編譯為 PHP 腳本,僅首次解析,後續直接執行,極快
智能重編譯僅重新編譯變更過的模板檔案
自訂函數/修飾器模板語言高度可擴展
內建緩存支援多種緩存處理函數
插件架構功能模組化,易於維護擴展

現代專案多改用 Twig、Blade 或前端框架 SSR,但 Smarty 的「編譯緩存」設計思想仍值得借鑑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved