php+Smarty生成静态页原理,论坛里好多朋友都在问我这个问题。不懂的进来看下

其实用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]后面要加个[] 如果不加替换就会出现错误 
//开始替换了

http://www.nibao.net/question/8104
$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>
        好了,先到大这,我也没调试就直接给大家讲了,如果有错误,请大家指出

php+Smarty生成静态页原理,论坛里好多朋友都在问我这个问题。不懂的进来看下

时间: 2024-11-14 17:06:37

php+Smarty生成静态页原理,论坛里好多朋友都在问我这个问题。不懂的进来看下的相关文章

ThinkPHP生成静态页buildHtml方法

原来ThinkPHP自带了生成静态页的函数buildHtml,使用起来很方便!最新的手册里没写这个方法,向大家介绍一下. PHP 1 2 3 4 5 6 7 8 9 10 11 protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') { $content = $this->fetch($templateFile); $htmlpath   = !empty($htmlpath)?$htmlpath:HTML

NET MVC RazorEngine 解析模板生成静态页

ASP.NET MVC 解析模板生成静态页一(RazorEngine) 简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目. 我们在很多项目开发中会常常用到页面静态化,页面静态化有许多方式,最常见的就是类似很多PHP CMS种使用的 标签替换的方式(如:帝国CMS.EcSh

生成静态页技术

概要: 1.什么是生成静态页技术? 答:互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面,这样无形间就加大了数据库.将现有的ASP页直接生成静态页,将会节省很多. 2.为什么要生成静态页以及好处? 答:一.加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明 显提高: 二.有利于搜索引擎优化SEO,Baidu.Google都会优先收录静态页面,不仅被收录的快还收录的全: 三.减轻服务器负担,浏览网页无需调用系统数据库: 四.网站更安全,HTML页面不会受Asp相关

[Java Web]动态生成静态页

最近手机APP需要加一个分享功能.考虑到分享页面的点击量会远远大于注册用户量,为了减少服务器压力决定将分享页面生成html静态页供用户访问. 生成静态页的总体思路为: 从数据库中查找所需的数据 将数据嵌入到html代码中 把生成好的html代码通过文件流上传到服务器 数据嵌入可以通过两种方法实现:html模板替换或jsp动态生成. 1.html模板生成: 流程: 客户端向后端发出http请求 后端从数据库中查找需要的数据 从服务器找到对应的模板文件,替换其中内容并上传到服务器 将上传后得到的ur

基于PHP生成静态页的实现方法

t1.php 复制代码 代码如下: <?php// 方法一根据模版生成静态页面// replaceTemplateString函数用于替换模板中指定字符串function replaceTemplateString($templateString) {    // 用来替换的变量    $title = "文章标题";    $body = "这里是文章主体";    // 替换模板 中指定字符串    $showString = str_replace (

动态请求页面生成静态页

话说百度也是这样提高浏览速度的:此案例是控件开发的,MVC或一般处理程序开发的小伙伴们,修修改改一样可以用的: 后台: 1 protected void btnHtml_Click(object sender, EventArgs e) 2 { 3 if (Request.QueryString["id"] != null) 4 { 5 string NewId = Request.QueryString["id"]; 6 CJRZ.Model.Admin.Loan

mvc分页生成静态页,mvc生成静态页

http://blog.csdn.net/xxj_jing/article/details/7899125 分页生成静态页 http://www.cnblogs.com/luanyilin/archive/2012/11/02/2751145.html 生成静态页

以ASPX生成静态页

/// <summary> /// 以ASPX生成静态页 /// </summary> /// <param name="path"></param> /// <param name="outpath"></param> public static void CreateHtml(string path, string outpath) { Page page = new Page(); str

Asp.net新闻列表生成静态页批量生成和单页生成

其实生成静态页的目的就是为了提高用户的体验度,访问速度快,这是最直接的目的.... 前期准备,需要新建一个文件夹..前台展示:/new/default.aspx  这个页面放的就是动态的新闻列表数据. 先看截图.. 上代码 这里要说明一下,我用的AspNetPager分页控件,需要设置一下 <webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" La