smarty实现PHP静态化的两种方法分享

方法一:


代码如下:

<?php
require_once("./config/config.php");
ob_start();
$id=$_GET[id];
$sql="select * from table_name where id='$id'";
$result=mysql_query($sql);
$rs=mysql_fetch_object($result);
$smarty->assign("showtitle",$rs->title);
$smarty->assign("showcontent",$rs->content);
$smarty->display("content.html");
$this_my_f= ob_get_contents();
ob_end_clean();
$filename = "$id.html";
tohtmlfile_cjjer($filename,$this_my_f);
// 文件生成函数
function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content){
if (is_file ($file_cjjer_name)){
@unlink ($file_cjjer_name); //存在,就删除
}
$cjjer_handle = fopen ($file_cjjer_name,"w"); //创建文件
if (!is_writable ($file_cjjer_name)){ //判断写权限
return false;
}
if (!fwrite ($cjjer_handle,$file_cjjer_content)){
return false;
}
fclose ($cjjer_handle); //关闭指针
return $file_cjjer_name; //返回文件名
}
?>

方法二:
smarty中有一个获取模板页内容方法fetch(), 它的声明原形是这样的:


代码如下:

<?php
function fetch($resource_name, $cache_id = null,
$compile_id = null, $display = false)
?>

第一个参数为模板名称, 第二个参数为缓存的id, 第三个参数为编译id, 第四个参数为是否显示模板内容. 生成静态页我们就需要用到这个方法.


代码如下:

<?php
$smarty = new Smarty();
//其它模板替换语法...
//下面这句取得页面中所有内容, 注意最后一个参数为false
$content = $smarty->fetch('模板名称.tpl', null, null, false);
//下面将内容写入至一个静态文件
$fp = fopen('news.html', 'w');
fwrite($fp, $content);
fclose($fp);
//OK, 到这里这个news.html静态页就生成了, 你可以处理你下一步的工作了
?>

(0)

相关推荐

  • 方便实用的PHP生成静态页面类(非smarty)第1/2页

    复制代码 代码如下: /*********************/ /* */ /* Version : 5.2.5 */ /* Author : liqiangwork#sohu.com */ /* QQ : 570937581 */ /* */ /*********************/ //-----------------------------生成静态的类------------------------------- class Makehtml{ public $MbUrl,$

  • smarty静态实验表明,网络上是错的~呵呵

    复制代码 代码如下: <?   require_once("Smarty/libs/Smarty.class.php");   $smarty = new smarty();   $smarty->templates_dir="templates";   $smarty->templates_c_dir="templates_c";   $smarty->left_delimiter="<{"; 

  • Smarty实现页面静态化(生成HTML)的方法

    本文实例讲述了Smarty实现页面静态化(生成HTML)的方法.分享给大家供大家参考,具体如下: 为了减少数据库读取次数,某些内容不经常被更改的页面,比如文章详细页面需要做成HTML静态页面. 在使用Smarty的情况下,也可以实现页面静态化.下面先简单说一下使用Smarty时通常动态读取的做法. 一般分这几步: 1.通过URL传递一个参数(ID): 2.然后根据此ID查询数据库: 3.取得数据后根据需要修改显示内容: 4.assign需要显示的数据: 5.display模板文件. Smarty

  • smarty 缓存控制前的页面静态化原理

    可在display中进行设置 $smarty->display("demo.tpl",$_SERVER[REQUEST_URI])来实现一个模版有多个缓存. 既然文件已经有缓存了,我们就可以走缓存文件了,不用循环的执行连接数据库,进行查询了.用smatry中的一个函数进行判断 $smarty->iscached(demo.tpl"",",$_SERVER[REQUEST_URI])默认值为"true" 这里的模版要和disp

  • php Smarty模板生成html文档的方法

    下面直接发代码 复制代码 代码如下: <?php /* file:config_smarty.php done:配置Smarty author:www.5dkx.com date:2009-12-21 */ include_once("../libs/smarty.class.php"); class MySmarty extends Smarty{ function __construct() { $this->Smarty(); $this->config_dir

  • PHP中使用smarty生成静态文件的例子

    首先先要把需要静态化的内容填充到模版中去 复制代码 代码如下: #eg.这个是静态化首页的 function staticIndex(){ $newslist = $article->getArticles(null,54,'DESC',1,6,false,1,2,'',0,0,1);   if($newslist){    foreach($newslist as $k=>$v){     $newslist[$k]['title_all'] = $v['title'];     $news

  • smarty实现PHP静态化的两种方法分享

    方法一: 复制代码 代码如下: <?php require_once("./config/config.php"); ob_start(); $id=$_GET[id]; $sql="select * from table_name where id='$id'"; $result=mysql_query($sql); $rs=mysql_fetch_object($result); $smarty->assign("showtitle&quo

  • C语言实现倒置字符串的两种方法分享

    目录 前言 一.题目 二.思路讲解 三.代码实现 四.代码总结 五.第二种方法倒置字符串 六.总结 前言 今天在牛客网上刷了一道题,我感觉挺有意义的,现在我就分享给大家,并且告诉大家解题思路. 一.题目 事例: 输入下列字符: I like beijing. 输出的字符: beijing. like I 二.思路讲解 1.设立一个数组存放输入的字符串 2.将其中每个单词进行逆置 得到 I ekil .gnjieb 3.再将字符串逆置  得到beijing.like I 三.代码实现 1.设立一个

  • 用Mootools获得操作索引的两种方法分享

    我们先说一下第一种方法,(此方法为一位QQ好友提供,感谢此人,此人昵称是:exf) 复制代码 代码如下: <body> <ul>Title1 <li>11111</li> </ul> <ul>Title2 <li>22222</li> </ul> <ul>Title3 <li>33333</li> </ul> <ul>Title4 <

  • gridview实现服务器端和客户端全选的两种方法分享

    复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="

  • 易语言静态编译的两种方法总结

    许多刚接触易语言的朋友在画上几个小时的时间写好代码准备编译的时候,或多或少碰到过易语言提示无法定位连接器的问题,导致辛辛苦苦制作的软件无法编译发布,今天小编就来教大家两种解决易语言无法静态编译的方法,大家一定要耐心看完哦,最好能够够跟着教程一步一步操作. 1.首先,打开易语言安装目录,找到"VC98linker"文件夹进入(PS:如果找不到此目录,说明您下载的易语言并非破解版本,请先自行百度搜索下载安装易语言5.11破解版). 2.找到"link.e"文件,打开.(

  • PHP 实现页面静态化的几种方法

    1.通过buffer来实现 需要用file_put_contents ob_get_clean()等内置函数 ob_start (); include "filterpost.html"; $mtime = filemtime("./filterpost.html");//在这里可以判断文件是否存在和过期,然后做缓存或者生成静态文件操作 $pageCache = str_replace('submit2','login',ob_get_contents());//将

  • Android中获取状态栏高度的两种方法分享

    前言 最近在做一个关于FAB的功能的时候需要获取状态栏的高度,在网上查了很多种方法,下面是选出的比较合理的两个方法.主要参考stackoverflow的这篇问答:http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android 方法一: private double getStatusBarHeight(Context context){ double statusBarHeight = Math.ceil(25

  • js获取GridView中行数据的两种方法 分享

    第一种方法: 复制代码 代码如下: function submitData() {    var tb = document.getElementById(IDArray[0]);   //获取服务器控件GridView的ID    if (tb)     {    var rows = tb.rows;    for (var i = 1; i < rows.length; i++) {        var id = rows[i].cells[1].innerText;        va

  • Linux/Unix下安装Perl模块的两种方法分享

    方法一.手工安装的步骤 从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz,假设放在/usr/local/src/下. cd /usr/local/src 解压缩这个文件: tar xvzf DBI-1.13.tar.gz 这时会新建一个DBI-1.13的目录. cd DBI-1.13 生成makefile: perl Makefile.PL 建立模块 make 测试模块 make test 如果测试结果报告"all test ok",您就可以放心地安装编译好

随机推荐