php+smarty生成静态页面

主要用到Smarty的这个方法 $Smarty->fetch("模板名")

这个函数用法很简单,和$Smarty->display("模板名") 是一样的。

不同的是$Smarty->fetch("模板名") 是把模板替换后的内容返回

而$Smarty->display("模板名")是直接输出也可以说是显示出来。

我们用$Smarty->fetch("模板名") 方法得到了替换模板之后的内容

之后就只要把内容写到xxx.html文件中就行了。下面我给大家说说我个人生成静态页的方法

[php]

<?php

include_once("Smarty.class.config.php"); // 调用Smarty

include_once("mysql.class.config.php"); //调用mysql类

$Result = $db->Select("message");

$Total = $db->ReTotal($Result); //这里是为了算出数据库总纪录数

$PageSIze = 10; //这里定义每页显示多少条纪录

for($i=1;$i<=$Total;$i++){

//有多少纪录就循环多少次

$HtmlName = "index_$i.html"; //我们已当前是第几条纪录命名每个.html文件 第一次文件名为 index_1.html;

$Limit = ($i-1) * $PageSize . "," . $PageSize; //这里是得到每次查询的LImit值 ,第一次为 0,10

$MenuTop = "<a href='index_".($i-1).".html'>上一页</a>"; //当前页为$i 那么$i-1就是上一页

$MenuNext = "<a href='index_".($i+1).">下一页</a>"; //同样$i+1肯定就是下一页了

//得到了文件名,分页导航条 ,我们开始替换模板

$Sql[$i] = "SELECT * FROM message limit $Limit"; //这时候$Sql = "SELECT * FROM message limit 0,10";

$Result[$i] = mysql_query($Sql[$i]); //已当前$i的值,也就是当前是第几页来给$Sql 和$Result 为名字

while($Row[$i][] = mysql_fetch_array($Result[$i])){ //我也不知道为什么$Row[$i]后面要加个[] 如果不加替换就会出现错误

//开始替换了

$Smarty->assign("message",$Row);

$Smarty->assign("MenuTop",$MenuTop) //上一页

$Smarty->assign("MenuNext",$MenuNext) //下一页

$Content[$i] = $Smarty->fetch("index.html") //用$Content[$i] 得到每页的内容

}

//替换完了,我们把内容写到文件里

if(file_exists($HtmlName)){

@unlink($HtmlName) ; //如果文件已经存在就把它删除

}

$fp = fopen($HtmlName,"w"); //以可写方式打开$HtmlName ,第一次循环是打开index_1.html

fwrite($fp,$Content[$i]); //用fwrite()函数, 把内容写入每个文件

fclose($fp);//关闭打开的文件指针

}

//好了我没来看看模板页

?>

[/php]

<html>

<body>

{section name=list loop=$message} <!--这就是我们上面替换的那个模板变量-->

姓名:{$message

.name} <br>

内容:{$message

.content} <hr>

{sectionelse}

暂时没有内容 <!-- 如果没有内容就显示 -->

{/section}

{$MenuTop} | {$MenuNext} <!--这里是我们上面替换的分页条-->

</body>

</html>