用 Smarty 生成静态页面入门介绍
why Smarty?
随着公司首页(以下简称首页)流量越来越大,最近开始考虑使用后台语言生成静态页面的技术。
我们知道,一个简单页面一般是一个 .html(或者 .htm 、.shtml)后缀的文件,然后在 html 页面中再引入一些 css 和 js。如果一个页面里全部是静态元素,那么打开速度会相当地快,但是首页的内容经常需要修改,部分内容还需要实时更新(一天三次),线上做法是将需要经常改动的模块做成接口,用 ajax 去请求然后渲染页面,但是这样做增加了服务器压力(每次打开都需要请求接口数据),而且增加了首页渲染的速度(请求+渲染),如果能用接口数据生成静态页面,就完美了,每次数据需要修改或者更新时,生成个静态页面,更新线上的静态页面,能极大地减轻服务器的压力。Smarty 正是能帮忙做这件事的利器!
实战
Smarty 是一个使用PHP写出来的模板引擎,具体介绍可以自行百度谷歌,这里只关心其基本用法。
我们先下载 Smarty,比如我下的是 "smarty-3.1.27" 版本,将其解压,放在 apache 的相关目录下。比如楼主放在了 wampserver 的 www 目录下,并将其重命名为 "smarty"。
假设我们的首页是这样一个简单页面:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>hanzichi</title>
</head>
<body>
<p>hello world</p>
</body>
</html>
我们需要经常修改的是 title 的内容以及 p 标签内的内容。Smarty 规定需要动态生成的内容用 {$valueName} 的形式表示:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>{$title}</title>
</head>
<body>
<p>{$content}</p>
</body>
</html>
我这里把上面的内容保存为 m.tpl,放在 "smarty\demo\templates" 目录下。
模板已经写完,我们还需要一个启动模板的 php 文件,我们在 "smarty\demo" 目录下新建个 "m.php" 的文件,内容如下(注意 assign() 的内容和 .tpl 中的内容对应,且只差个 $):
<?php
require '../libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->assign("title", "hello, zichi");
$smarty->assign("content", "hello world");
$smarty->display('m.tpl');
?>
我们再在浏览器中打开 http://localhost/smarty/demo/m.php,如果页面已经变成了 hello world,那么模板替换就成功了!
但是通常情况下我们要的是生成一个 .html 文件,可以先在 "smarty\demo" 目录下新建个 index.html 文件,然后把 m.php 替换成如下内容:
<?php
require '../libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->assign("title", "hello, zichi");
$smarty->assign("content", "hello world");
$contect = $smarty->fetch("m.tpl");
$fp = fopen("index.html", "w");
fwrite($fp, $contect);
fclose($fp);
?>
最后再运行该 php 文件,那么 index.html 内容就自动被替换成有 'hello world' 的内容了!
当然,这只是最简单的 Smarty 模板替换,其他一些初级中级高级的应用还需要进一步探索!
用 Smarty 生成静态页面入门介绍的更多相关文章
- 浅谈php生成静态页面
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
- PHP生成静态页面的方法
在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存 等实现页面静态化,今天就以PHP实例教程形 ...
- .net 生成 静态页面
.net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...
- 比较详细PHP生成静态页面教程
一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合, 也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客 ...
- PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
1.server会依据文件的后缀名去进行解析,假设是HTML文件则server不会进行语法解析.而是直接输出到浏览器. 2.假设一个页面中所有都是HTML代码而没有须要解析的PHP语法,则没有必要保存 ...
- PHP生成静态页面详解
PHP生成静态页面详解 看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考.好了,我们先回顾一些基本的概念. 一,PHP脚本与动态页面. PHP ...
- PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...
- .NET生成静态页面并分页
因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...
- C#根据网址生成静态页面
HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件 是后台管理的首页. 包含生成留言板首页,以及显示用户名,退出等功能. 根据网址生成页面的方法: boo ...
随机推荐
- PHP数据的序列化/反序列化
最近在接触一个叫做medoo的mysql框架,这个框架有一个特点,在insert/update时,如果你给进的数据是array的话会自动转成序列化字符串,说实话这个东西以前还没怎么接触过,索性去搜索了 ...
- SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库
5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 ...
- Access界面基础操作
1. 显示表 2. 条件“或” SELECT 研究生.姓名, 研究生.性别, 研究生.入学分数 FROM 研究生 WHERE (研究生.性别="女" AND 研究生.入学分数< ...
- jQuery简单入门(二)
2.Dom操作 A.DOM分类 个人认为在jQuery中这些分类被弱化了,有兴趣的读者可以自行补充这方面的知识: aa.DOM Core bb.HTML -DOM cc. CSS-DOM B.jQue ...
- [转]输出带颜色的shell
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033 ...
- 导出HTML
版权声明:本文为博主原创文章,未经博主允许不得转载.
- Linux基本操作命令之文件查看cat more less tail head
cat 参考之前博客:Linux基础命令之cat使用方法大全 more 命令 命令:more使用权限:所有使用者使用方式:more [选项] filename说明:类似于cat,不过会一页一页的显示内 ...
- [转]KendoUI系列:Grid
本文转自:http://www.cnblogs.com/libingql/p/3774879.html 1.基本使用 <div id="grid"></div&g ...
- Booth Multiplication Algorithm [ASM-MIPS]
A typical implementation Booth's algorithm can be implemented by repeatedly adding (with ordinary un ...
- 【原】css实现两端对齐的3种方法
说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐.右对齐的方式来对齐页面 ...