phpcms模板生成原理

phpcms模板生成原理2009-09-25 16:14PHPCMS是功能强大的网站管理系统。以后有时间,俺要将其管理、使用、再开发等等都理顺出来。这一篇短文先介绍PHPCMS的模板机制。

所谓网站模板,就是生成网页的“模子”,主要包括固定的图片、表格、颜色等美术风格,以及要从数据库输出的数据标签,还有简单的phpcms定义的语法(也可以是很复杂的php语法)。PHPCMS每个网站的每个栏目,都可以设置不同的模板,最终栏目的网页都是一个“模子”里出来的,应此这个栏目的网页外观、风格是一致的。

PHPCMS的模板按照模块功能,分别放在这些模块名字命名的目录下面,而其中最重要的内容栏目模板,如新闻、产品、信息、图片、下载、视频以及首页的模板则放到phpcms目录下面。

phpcms目录,header.html,footer.html是网站所有网页的页头和页尾模板,index.html则是网站首页模板。文件 category.html和list.html 是新闻模型的栏目首页和栏目列表页,由于phpcms认为新闻模型是最重要的吧,因此新闻模型的模板默认不要带后缀,其他模型的栏目首页和列表页则要带上后缀,如category-info.html,list-info.html,这是信息栏目模型的栏目首页、栏目列表页,其他类似。至于一些扩充模型,如黄页等,其模板则在\yp\目录下面。

下面说说模板生成网页的过程。

phpcms的网页允许生成静态网页和动态网页,不管是静态还是动态,风格都由模板限定。首先,网站管理员要把相应模型的模板放到模板目录下面,并在管理后台设定模板方案,确定后,phpcms将把模板编译为相应的php文件,保存到\data\cache_template 下面。编译过程实际上就几条语句,把模板中的phpcms语句转换为php语句,把数据标签翻译为sql数据库操作语句,这就成了标准的php文件,服务器可以直接执行了。对于动态网页来说,工作已经完成了。静态网页则还要做一次“置换”,执行php模板文件,按照php语法执行sql语句,把sql语句输出的结果再和模板结构部门组合成网页文件(html),并写到服务器空间里面。

这就是pgpcms系统的模板机制,灵活运用这个机制,可以设定不同子栏目灵活多变的模板。phper也要注意的是,直接改\data\cache_template\下面的php模板文件是没用的,必须改\templates\下面的静态模板。

时间: 2024-10-09 19:44:49

phpcms模板生成原理的相关文章

[Vue源码]一起来学Vue模板编译原理(一)-Template生成AST

本文我们一起通过学习Vue模板编译原理(一)-Template生成AST来分析Vue源码.预计接下来会围绕Vue源码来整理一些文章,如下. 一起来学Vue双向绑定原理-数据劫持和发布订阅 一起来学Vue模板编译原理(一)-Template生成AST 一起来学Vue模板编译原理(二)-AST生成Render字符串 一起来学Vue虚拟DOM解析-Virtual Dom实现和Dom-diff算法 这些文章统一放在我的git仓库:https://github.com/yzsunlei/javascrip

[Vue源码]一起来学Vue模板编译原理(二)-AST生成Render字符串

本文我们一起通过学习Vue模板编译原理(二)-AST生成Render字符串来分析Vue源码.预计接下来会围绕Vue源码来整理一些文章,如下. 一起来学Vue双向绑定原理-数据劫持和发布订阅 一起来学Vue模板编译原理(一)-Template生成AST 一起来学Vue模板编译原理(二)-AST生成Render字符串 一起来学Vue虚拟DOM解析-Virtual Dom实现和Dom-diff算法 这些文章统一放在我的git仓库:https://github.com/yzsunlei/javascri

使用word的xml模板生成.doc文件

一.编辑模板 替换地方以变量标记如"案件编号"可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writePath WordUtil.printWordbyXMLWithOutputPath(templateFile, writePath, filename, dataMap); /** * 打印word文档(传入参数需要传入输出文件的保存路径的) * @param templateFile *

JavaScript模板引擎原理,几行代码的事儿

JavaScript模板引擎原理,几行代码的事儿 什么是模板引擎,说的简单点,就是一个字符串中有几个变量待定.比如: var tpl = 'Hei, my name is <%name%>, and I\'m <%age%> years old.'; 通过模板引擎函数把数据塞进去, var data = { "name": "Barret Lee", "age": "20" }; var result

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

tornado模板引擎原理

前言 老师问小明:已经a=1, 求a+1的值. 小明挠挠头,思考后回答:老师,a+1的结果是2. 以上是一个非常简单的例子,实际上就是一个模板编译过程. a=1,表示一个命名空间(namespace)中的一项,该命名空间中存在一个名称(name)为a,其值为1.在python里面,命名空间可以用数据结构字典来表示. a+1,实际上是一个非常简单的模板.这个模板里面有且只有一条规则a+1.本博文中所说的模板,实际上更类似一份空白的数学考卷.这份数学考卷中,有很多类似上面老师问小明的题目. 学生解决

FreeMarker之根据模板生成Java代码

FreeMarker根据模板生成Java代码,光这句话,大家想必也知道它的应用了,比如流行的DRY原则,该原则的意思,可简单概述为"不要写重复的代码". 比如Java中三层架构,数据访问层,业务逻辑层,表现层,光这三层就出现重复性的增删改查及其相关的界面代码. 如何不写重复的增删改查相关的代码,可以参考我的MP实战系列文章和MyBatis的逆向工程(针对Java相关框架): mybatis逆向工程之maven工程 MP实战系列(六)之代码生成器讲解 其中MP实战系列(六)之代码生成器讲

JavaScript模板引擎原理与用法

这篇文章主要介绍了JavaScript模板引擎原理与用法,结合实例形式详细分析了javascript模版引擎相关概念.原理.定义及使用方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下 一.前言 什么是模板引擎,说的简单点,就是一个字符串中有几个变量待定.比如: var tpl = 'Hei, my name is <%name%>, and I\'m <%age%> years old.'; 通过模板引擎函数把数据塞进去, var data = { &q

CCF - 201509-3 - 模板生成系统

问题描述 试题编号: 201509-3 试题名称: 模板生成系统 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerry 时,网页的源代码是 这样的例子在包含动态内容的网站中还有很多.为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统. 模板是包含特殊标记的文本.成成用到的模板只包