Smarty提高:如何通过smarty生成纯静态化网页

今天找关于网站生成静态页的文章,突发奇想:smarty能生成页面缓存,能不能直接生成静态页呢?于是上网搜了下相关文章。找到一篇不错的:http://www.blogguy.cn/show-228-1.html

Smarty最大的功能是做模版的页面缓存。也就是通过Smarty可以完成两个步骤:编译+解析

第一步:编译。是指把模版文件的标签替换为纯php,再保存在缓存位置,保存的文件扩展名是PHP,我把这个步骤叫做编译(这是我自己的叫法,不是官方的)

第二步:解析。也就是把刚才编译的PHP文件解析执行而已~~这个就不用多做解释了

切入正题,在Smarty.class.php文件中加入如下代码


function MakeHtmlFile($file_name, $content) 
    {     //目录不存在就创建 
         if (!file_exists (dirname($file_name))) { 
             if (!@mkdir (dirname($file_name), 0777)) { 
                     die($file_name."目录创建失败!"); 
             } 
         } 
                     
         if(!$fp = fopen($file_name, "w")){ 
             echo "文件打开失败!"; 
             return false; 
         } 


         if(!fwrite($fp, $content)){ 
             echo "文件写入失败!"; 
             fclose($fp); 
             return false; 
         } 
         
         fclose($fp);
             chmod($file_name,0666);
     }

这个函数的作用就是保存文件~~

调用方法如下


require '../libs/Smarty.class.php';


$smarty = new Smarty;


//…………省略变量定义和赋值


//$smarty->display('index.tpl');
$content=$smarty->fetch("index.tpl");

$smarty->MakeHtmlFile('./index.html',$content);//生成


( ! ) Warning: Missing argument 1 for cwppos_show_review(), called in /data/www/enjoyphp/wp-content/themes/flat/content-single.php on line 29 and defined in /data/www/enjoyphp/wp-content/plugins/wp-product-review/includes/legacy.php on line 18
Call Stack
#TimeMemoryFunctionLocation
10.0000355208{main}( ).../index.php:0
20.0000355496require( '/data/www/enjoyphp/wp-blog-header.php' ).../index.php:17
30.163410161624require_once( '/data/www/enjoyphp/wp-includes/template-loader.php' ).../wp-blog-header.php:19
40.164710232768include( '/data/www/enjoyphp/wp-content/themes/flat/single.php' ).../template-loader.php:74
50.246010801080get_template_part( ).../single.php:5
60.246010801600locate_template( ).../general-template.php:167
70.246110801696load_template( ).../template.php:643
80.246110802080require( '/data/www/enjoyphp/wp-content/themes/flat/content-single.php' ).../template.php:686
90.250910787192cwppos_show_review( ).../content-single.php:29

发表评论

电子邮件地址不会被公开。 必填项已用*标注