PHPCMS V9 模板制作完整教程
PHPCMS V9 是一款基于 PHP+MySQL 开发的网站管理系统,其模板系统非常灵活,采用了类似 Smarty 的模板引擎语法,理解其工作原理后,制作模板会变得非常简单。

核心概念:模板如何工作?
在开始之前,你必须理解 PHPCMS V9 模板的核心工作流程:
- 控制器:当用户访问一个页面(如文章列表、内容页)时,PHPCMS 的控制器会根据请求从数据库中获取数据。
- 变量赋值:控制器将获取到的数据(如文章标题、内容、作者等)打包成变量,然后传递给模板引擎。
- 模板渲染:模板引擎加载对应的模板文件(
.html),并将控制器传递过来的变量值替换掉模板文件中的特定标签。 - 输出HTML:模板引擎将替换后的纯 HTML 代码发送到用户的浏览器进行显示。
模板就是 HTML + PHPCMS 标签。 你只需要在 HTML 的相应位置插入 PHPCMS 的特定标签,系统就会自动用数据库里的内容填充这些标签。
准备工作:开发环境搭建
-
安装 PHPCMS V9:
- 从 PHPCMS 官网下载最新版的 V9 程序。
- 解压到你本地或服务器的 Web 根目录(如
htdocs或www)。 - 创建一个数据库,并导入
install.sql文件。 - 访问你的域名(如
http://localhost/phpcms/),根据安装向导完成安装,记住你的后台登录地址(通常是http://localhost/phpcms/phpcms/)。
-
推荐开发工具:
(图片来源网络,侵删)- 代码编辑器:强烈推荐使用 VS Code、Sublime Text 或 Dreamweaver,它们支持语法高亮,能让你更清晰地看到模板标签。
- FTP/SFTP 工具:用于将本地制作好的模板文件上传到服务器。
模板目录结构
PHPCMS V9 的模板文件存放在 /statics/ 目录下,一个标准的模板目录结构如下:
/statics/
├── default/ <-- 默认模板目录,所有新模板都建议在这里创建自己的文件夹
│ ├── images/ <-- 存放模板用到的图片
│ ├── js/ <-- 存放模板用到的 JavaScript 文件
│ ├── css/ <-- 存放模板用到的 CSS 样式文件
│ └── template/ <-- 核心目录,存放所有页面模板文件
│ ├── index/ <-- 首页模板目录
│ │ └── index.html
│ ├── content/ <-- 内容页模板目录
│ │ └── show.html
│ └── list/ <!-- 列表页模板目录
│ └── index.html
└── ... (其他模板)
重要提示:/statics/default/ 是系统默认的模板文件夹,为了避免升级时覆盖你的模板,强烈建议不要修改 default 文件夹,而是复制一份并重命名(my_template),然后在后台选择使用这个新模板。
核心模板标签详解
这是模板制作的核心部分,PHPCMS 的标签分为两类:系统标签 和 数据调用标签。
系统标签
系统标签用于获取网站的全局信息,如网站名称、版权信息等。
{site_name}:网站名称{site_title}{site_keywords}:网站关键词{site_description}:网站描述{site_url}:网站根目录 URL{template_url}:当前模板目录 URL (非常常用,用于引入 CSS 和 JS){CSS_PATH}:等同于{template_url}css/{JS_PATH}:等同于{template_url}js/{IMG_PATH}:等同于{template_url}images/
示例:在 <head> 标签中引入 CSS 文件。
<head>
<meta charset="utf-8">{site_title}</title>
<link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css">
<script type="text/javascript" src="{JS_PATH}jquery.min.js"></script>
</head>
数据调用标签
数据调用标签用于从数据库中动态获取内容,如文章列表、文章详情等。
基本语法:
{pc:get sql="..." cache="..." num="..." return="data"}
{loop $data $r}
<!-- 在这里使用 $r 变量来访问每条数据的字段 -->
<li><a href="{$r[url]}">{$r[title]}</a></li>
{/loop}
sql: 数据库查询语句(最核心的部分)。cache: 缓存时间,单位为秒,设为0表示不缓存,开启缓存可以显著提升网站性能。num: 获取的数据条数。return: 定义一个变量名来接收数据,默认是data。{loop $data $r}: 这是一个循环。$data是return定义的变量,$r是循环中每一条数据的数组变量。{$r[字段名]}: 通过$r变量来访问具体字段的值,如{$r[title]}是文章标题,{$r[thumb]}是文章缩略图,{$r[url]}是文章链接。
常用数据表:
v9_news: 新闻文章表v9_page: 单页面表v9_category: 栏目表
制作一个完整的首页模板
假设我们要制作一个包含网站 Logo、主导航、文章列表(头条、推荐、最新)和页脚的首页。
步骤 1:创建模板文件
在 /statics/default/template/ 目录下创建一个名为 index 的文件夹,并在其中创建 index.html 文件。
步骤 2:编写 HTML 结构
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">{site_title}</title>
<link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css">
</head>
<body>
<!-- 头部 -->
<div class="header">
<div class="logo"><a href="{site_url}"><img src="{IMG_PATH}logo.png" alt="{site_name}"></a></div>
<div class="nav">
<!-- 导航菜单,我们稍后用标签实现 -->
</div>
</div>
<!-- 内容区 -->
<div class="content">
<!-- 头条新闻 -->
<div class="headline">
<!-- 我们稍后用标签调用头条新闻 -->
</div>
<!-- 左侧文章列表 -->
<div class="main">
<div class="list">
<!-- 我们稍后用标签调用推荐文章列表 -->
</div>
</div>
<!-- 右侧边栏 -->
<div class="sidebar">
<!-- 我们稍后用标签调用最新文章和热门标签 -->
</div>
</div>
<!-- 页脚 -->
<div class="footer">
<p>Copyright © {date('Y', time())} {site_name}. All Rights Reserved.</p>
</div>
</body>
</html>
步骤 3:填充 PHPCMS 标签
我们将用 PHPCMS 标签替换掉 HTML 中的注释部分。
调用主导航菜单
导航通常来自 v9_category 表,且需要是顶级栏目。
<div class="nav">
<ul>
{pc:get sql="SELECT catid,catname,style,url FROM `v9_category` WHERE `parentid`=0 AND `menu`=1 ORDER BY listorder ASC" cache="3600" num="10" return="nav"}
{loop $nav $n}
<li><a href="{$n[url]}">{$n[catname]}</a></li>
{/loop}
{/pc}
</ul>
</div>
parentid=0: 表示顶级栏目。menu=1: 表示在导航菜单中显示。
调用头条新闻
头条新闻通常是 v9_news 表中 posid 字段为 1 的文章。
<div class="headline">
{pc:get sql="SELECT title,url,thumb FROM `v9_news` WHERE `posid`=1 ORDER BY `updatetime` DESC" cache="3600" num="5" return="headline"}
{loop $headline $h}
<dl>
<dt><a href="{$h[url]}" target="_blank"><img src="{$h[thumb]}" alt="{$h[title]}"></a></dt>
<dd><a href="{$h[url]}" target="_blank">{$h[title]}</a></dd>
</dl>
{/loop}
{/pc}
</div>
调用推荐文章列表
假设我们要调用 ID 为 5 的栏目下的推荐文章。
<div class="list">
<h2>推荐文章</h2>
{pc:get sql="SELECT title,url,description FROM `v9_news` WHERE `catid`=5 AND `status`=1 ORDER BY `id` DESC" cache="3600" num="10" return="list"}
<ul>
{loop $list $l}
<li><a href="{$l[url]}" target="_blank">{$l[title]}</a><span class="date">{date('Y-m-d', $l[inputtime])}</span></li>
{/loop}
</ul>
{/pc}
</div>
catid=5: 指定栏目 ID。status=1: 表示已发布的文章。inputtime: 发布时间,我们用date函数格式化它。
调用最新文章和热门标签
<div class="sidebar">
<!-- 最新文章 -->
<div class="box">
<h3>最新文章</h3>
{pc:get sql="SELECT title,url FROM `v9_news` WHERE `status`=1 ORDER BY `id` DESC" cache="3600" num="10" return="new"}
<ul>
{loop $new $n}
<li><a href="{$n[url]}" target="_blank">{$n[title]}</a></li>
{/loop}
</ul>
{/pc}
</div>
<!-- 热门标签 -->
<div class="box">
<h3>热门标签</h3>
{pc:get sql="SELECT tagname FROM `v9_keyword` ORDER BY `searchnums` DESC" cache="3600" num="20" return="tags"}
{loop $tags $t}
<a href="{site_url}index.php?m=content&c=tag&catid=0&tag={urlencode($t[tagname])}">{$t[tagname]}</a>
{/loop}
{/pc}
</div>
</div>
urlencode(): 对标签名进行 URL 编码,确保链接正确。
后台设置与切换
- 登录后台:访问
http://你的域名/phpcms/phpcms/。 - 进入模板管理:在左侧菜单中找到 ” -> “模板管理”。
- 选择站点和模块:确保你选择了正确的站点和模块(通常是“内容模块”)。
- 选择模板:在模板列表中,你应该能看到你刚才制作的
default模板,点击“使用”按钮将其设为当前默认模板。 - 生成首页:进入 ” -> “生成首页”,点击“生成首页”按钮,系统会根据你的
index.html模板生成静态的首页 HTML 文件。
访问你的网站首页,就能看到你制作的模板效果了!
进阶技巧
-
模板继承 (
{template}):- 多个页面(如列表页、内容页)可能有相同的头部和底部,为了避免重复代码,你可以创建一个
header.html和footer.html。 - 在其他页面中,使用
{template "header"}和{template "footer"}来引入它们。
header.html:<!DOCTYPE html> <html> <head> <title>{site_title}</title> <!-- ... --> </head> <body> <div class="header">...</div>index.html:{template "header"} <div class="content">...</div> {template "footer"} </body> </html> - 多个页面(如列表页、内容页)可能有相同的头部和底部,为了避免重复代码,你可以创建一个
-
自定义页面:
- 如果想做一个“关于我们”这种固定内容的页面,可以在后台 ” -> “页面管理” 中添加一个新页面。
- 填写页面名称和内容(支持 HTML 和标签),系统会自动生成一个静态页面。
-
调试技巧:
- 如果标签不显示内容,可能是 SQL 查询有问题,可以尝试在
sql语句后面加上debug="1",如{pc:get sql="..." debug="1"},页面会打印出 SQL 语句和查询结果,方便你调试。
- 如果标签不显示内容,可能是 SQL 查询有问题,可以尝试在
-
使用循环判断:
- 在
{loop}循环中,可以使用{$key}来获取当前循环的索引(从 0 开始)。 - 可以用来隔行变色:
<li class="{if $key % 2 == 0}even{/if}">...</li>。
- 在
制作 PHPCMS V9 模板的核心就是 “HTML + 标签”。
- 搭建环境:安装 PHPCMS,熟悉目录结构。
- 掌握标签:重点理解系统标签和数据调用标签 (
{pc}) 的用法。 - 从简到繁:先制作一个静态的 HTML 页面,然后用 PHPCMS 标签替换动态内容。
- 后台配合:学会在后台切换模板和生成页面。
- 勤于调试:利用
debug功能解决标签不显示的问题。
希望这份详细的教程能帮助你顺利掌握 PHPCMS V9 的模板制作!祝你成功!
