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>

posted @ 2012-01-04 16:18  haiwei.sun  阅读(1678)  评论(0编辑  收藏  举报
返回顶部