<?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; //返回文件名
}
?>
最后在将生成的静态页面发布到web上。

第二种方式:

这款生成静态页面的方法与其它的有一点不同,这是利用smarty模板引擎的fetch函数,由smarty解析的文件保存到一个变量,然后再利用fopen 创建文件,此方法不适合大数据量生成。
*/

include('./www.update8.com/smarty/smarty.class.php');
$smarty = new smarty();
$smarty->template_dir = "templates/";
$smarty->compile_dir = "templates_c/";
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";

$db = mysql教程_connect('localhost','root','');
mysql_select_db('test');
mysql_query('set names "utf8"');
$result = mysql_query('select * from news');
while($row[] = mysql_fetch_array($result)){
 $smarty->assign('news',$row);
}
//$smarty->display('smarty_html.html');
//以上不用写注释你都能看懂
//这里我们不显示他
//而是获得他
$content = $smarty->fetch('smarty_html.html');
//获得smarty替换都的模板文件内容也就是display之后的smarty_html.php的内容
/*
 其实这一步就相当于这样
 ob_start(); 开启缓冲区
 $smarty->display('smarty_html.html');
 $content = ob_get_contents(); 获得缓冲区内容
 ob_end_claen;关闭缓冲区
*/
makehtml('news.html',$content);//写入内容到news.html文件
echo '<a href="http://jiangyanan0425.blog.163.com/blog/news.html">查看</a>';
//点击查看静态页面就生成成功了!
//但是有个问题就是必须在当前页面才行
//比如你在另外一个php文件里$smarty->fetch('smarty_html.html');
//只能得到原本的模板文件内容,因为没有assign所以所有的模板变量都没替换
//生成了也是费的!
function makehtml($file,$content){
 $fp = fopen($file,'w');
 fwrite($fp,$content);
 fclose($fp);
}
?>

//模板页面

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<{section name=n loop=$news}>
id  <{$news[n].news_id}><br />
title  <{$news[n].news_title}> <br />
content<{$news[n].news_content}>
<hr />
<{sectionelse}>
暂时没有新闻
<{/section}>
</body>
</html>

Smarty实现HTML静态化页面的更多相关文章

  1. 利用PHP的ob函数实现生成静态化页面

    之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静 ...

  2. SEO误区之——静态化页面

    你随便去找一个做SEO的人或者一个公司,他百分之百会让你把网页弄成纯静态页面,然后告诉你这样对搜索引擎是如何如何地好,那么我告诉你,这个做 SEO的,肯定不专业. 网页静态化这个东西,纯属以讹传讹的事 ...

  3. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_12-页面静态化-页面静态化流程

    需要知道数据结构,然后去做模板标签.首先需要获取页面的数据模型.下面的每一条记录都代表一个页面. 比如这个轮播图.就需要提前给这个轮播图编写一个模板 有很多的页面如果知道每个页面的dataUrl.例如 ...

  4. springboot2.0结合freemarker生成静态化页面

    目录 1. pom.xml配置 2. application.yml配置 3. 使用模板文件静态化 3.1 创建测试类,编写测试方法 3.2 使用模板字符串静态化 使用freemarker将页面生成h ...

  5. ThinkPHP的静态化页面方法

    原来ThinkPHP自带了生成静态页的函数buildHtml,使用起来很方便!最新的手册里没写这个方法,向大家介绍一下.     protected function buildHtml($htmlf ...

  6. PHP实现HTML页面静态化

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化.一般情况下会从以下方面 ...

  7. 如何做URL静态化 和页面的静态化

    为什么要进行URL静态化? 如果帮到了您,您可以小支持一下,谢谢您   1.更好的迎合搜索引擎工作原理的爬行抓取机制:2.把网站URL静态化更有助于网站获得好的排名:3.URL静态化有利于用户体验.不 ...

  8. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  9. PHP 实现页面静态化

    PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...

随机推荐

  1. Triangle - POJ 2954(求三角形内的格子点的个数)

    Pick公式:平面上以格子点为顶点的简单多边形的面积=边上的点数/2+内部的点数+1. 代码如下: -------------------------------------------------- ...

  2. Eclipse修改字体大小

    1.MyEclipse|Window|General|Appearance|Colors and Fonts->点击Text Font->Edit

  3. sql server2008报“评估已过期....."

    开始-->所有程序-->Microsoft SQL Server 2008-->配置工具-->SQL Server 安装中心-->维护-->版本升级,接着按照提示一 ...

  4. jQuery判断页面滚动条滚动方向

    废话不多说,直接上代码 $(window).scroll(function(){ var before = $(window).scrollTop(); $(window).scroll(functi ...

  5. chromium截图实现

    声明:本blog是我自己写的,假设要转载,请注明:come from blog of niba! chromium终于显示是在ContentView上.但通过硬件加速.渲染合成的网页之前是在surfa ...

  6. android 67 生成和解析xml

    生成xml: package com.itheima.createxml; import java.io.File; import java.io.FileNotFoundException; imp ...

  7. DTRACE 专家

    http://dtrace.org/blogs/bmc/ https://github.com/bcantrill http://www.tudou.com/programs/view/Q6fHZFg ...

  8. Android开发之UI更新交互机制与实例解析

    android开发过程中,经常需要更新UI的状态和文案等.这是就需要对UI进行 更新.在android中更新UI一般有三种方法,handler机制.RunOnUiThread方法以及AsyncTask ...

  9. 用FlexSlider制作支付宝2013版幻灯片演示插件

    flexslider制作支付宝2013版幻灯片精美特效,一款非常不错的jQuery特效源码可在下面地址或去源码搜藏网下载适用浏览器:IE8.360.FireFox.Chrome.Safari.Oper ...

  10. Sqlserver中实现oralce 数据库的rownumber

    引用自:http://cai555.javaeye.com/blog/466033 方法1: with temp as ( select row_number() over(order by city ...