- 创建模板文件
- 模型和数据
- 在模板中调用数据
第一步:创建模板文件
模板文件通常存放在 statics/ 目录下,并按照栏目ID或模板风格进行组织。

(图片来源网络,侵删)
确定模板存放位置
模板文件有两个主要的存放位置,根据用途选择:
-
栏目模板:用于显示特定栏目的内容列表或内容详情。
- 路径:
statics/你的模板名称/html/(statics/default/html/) - 文件名规则:
- 列表页:
category_栏目ID_模板风格.php(category_1.php) - 详情页:
show_栏目ID_模板风格.php(show_1.php) - 如果所有栏目共用一个模板,可以省略
栏目ID,直接使用category.php和show.php。
- 列表页:
- 路径:
-
首页模板:用于网站首页。
- 路径:
statics/你的模板名称/html/ - 文件名:
index.php
- 路径:
编写模板代码
模板文件是标准的 HTML 文件,在其中嵌入 PHPCMS 的模板标签,每个模板文件的开头最好加上模板的注释,方便管理。

(图片来源网络,侵删)
示例:创建一个简单的首页模板 statics/default/html/index.php
{template "content","header"} <!-- 引入公共头部文件,如 header.php -->
<div class="main">
<h1>网站首页</h1>
<!-- 这里是调用内容的地方,我们将在第三步详细说明 -->
<div class="news_list">
{pc:get sql="SELECT * FROM v9_news ORDER BY id DESC" num="10" return="data"}
{loop $data $r}
<li>
<a href="{$r.url}">{$r.title}</a>
<span class="time">{date('Y-m-d H:i:s', $r.inputtime)}</span>
</li>
{/loop}
{/pc}
</div>
</div>
{template "content","footer"} <!-- 引入公共底部文件,如 footer.php -->
第二步:定义内容模型和数据
模板只是“外壳”,你需要有数据才能显示,在 PHPCMS V9 中,数据是通过“内容模型”来管理的。
模型
- 登录 PHPCMS V9 后台。
- 进入 内容 -> 内容模型管理。
- 点击 “添加模型”。
- 模型名称:给你的模型起个名字,新闻模型”。
- 表名:系统会自动生成一个表名,通常是
v9_模型名称,v9_news。请记住这个表名,在模板调用时需要用到。 - 内容字段:这是最关键的一步,点击 “添加字段” 来定义你的数据结构。
- 字段名:英文,如
title,author,content。 - :中文,如“标题”、“作者”、“内容”。
- 字段类型:根据需要选择,如“文本”、“文本域”、“编辑器”、“时间”等。
- 表单元素:系统会根据类型自动匹配,如“文本输入框”、“多行文本框”、“FCK编辑器”等。
- 字段名:英文,如
- 保存模型,系统会自动在数据库中创建对应的表。
- 进入 内容 -> 内容管理。
- 选择你刚才创建的模型(新闻模型”)。
- 点击 ”。
- 在表单中填写你刚才定义的字段内容,如标题、内容等。
- 。
你的数据库的 v9_news 表里就有了数据。
第三步:在模板中调用数据
这是核心环节,PHPCMS V9 使用 {pc} 标签来获取数据。
{pc} 标签的基本语法
{pc:get 参数1="值1" 参数2="值2" ...}
{loop $返回的数据变量 $循环变量}
// 循环体,使用 {$循环变量.字段名} 来显示数据
{/loop}
{/pc}
常用参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
action |
必需,指定要执行的操作。 | action="lists" (获取列表), action="content" (获取单条内容) |
model |
必需,指定要查询的数据模型。 | model="news" (对应 v9_news 表) |
siteid |
站点ID,默认为1,多站点时使用。 | siteid="1" |
catid |
栏目ID,用于获取指定栏目的内容。 | catid="5" |
num |
获取数据的数量。 | num="10" (获取10条) |
order |
数据排序方式。 | order="id DESC" (按ID降序), order="inputtime ASC" (按发布时间升序) |
page |
是否开启分页。 | page="1" (开启分页) |
return |
定义返回数据的变量名。 | return="data" (默认就是 data,可以省略) |
sql |
高级用法,直接写原生SQL语句。 | sql="SELECT * FROM v9_news WHERE status=1" |
实例演示
假设我们有一个“新闻”模型,表名为 v9_news,我们想在首页调用最新的10条新闻。
直接调用模型数据(不按栏目)
{pc:get model="news" num="10" order="id DESC"}
<ul class="news_list">
{loop $data $r}
<li>
<a href="{$r.url}">{$r.title}</a>
<span>{date('Y-m-d', $r.inputtime)}</span>
</li>
{/loop}
</ul>
{/pc}
model="news":告诉系统去v9_news表查数据。num="10":只取10条。order="id DESC":按ID从大到小排序,即最新的在最前面。{loop $data $r}:循环遍历获取到的数据集。$data是{pc}标签返回的数组,$r是当前循环到的元素(一条数据)。{$r.title}:输出这条新闻的title字段值。{$r.url}:这是一个特殊变量,PHPCMS会自动根据内容ID生成其详情页的URL。非常推荐使用,而不是手动拼接。{$r.inputtime}的发布时间戳。
调用指定栏目的内容
假设新闻栏目ID为 5。
{pc:get model="news" catid="5" num="10" order="id DESC"}
<ul class="news_list">
{loop $data $r}
<li>
<a href="{$r.url}">{$r.title}</a>
</li>
{/loop}
</ul>
{/pc}
只需增加 catid="5" 参数即可。
调用并开启分页
{pc:get model="news" catid="5" num="10" order="id DESC" page="1"}
<ul class="news_list">
{loop $data $r}
<li>
<a href="{$r.url}">{$r.title}</a>
</li>
{/loop}
</ul>
<!-- 分页代码 -->
<div class="page">
{$pages}
</div>
{/pc}
增加 page="1" 开启分页,然后在循环结束后使用 {$pages} 变量来输出分页导航。
高级技巧
引入公共模板
为了代码复用,通常会将页头、页脚、侧边栏等做成独立的模板文件。
- 创建公共模板:在
statics/你的模板名称/html/content/目录下创建header.php,footer.php等。 - 在主模板中引入:
{template "content","header"} <!-- 页面主体内容 --> {template "content","footer"}
使用子循环
一个 {pc} 标签内可以再嵌套另一个 {pc} 标签,用于调用关联数据。
<!-- 外层循环调用文章 -->
{pc:get model="article" catid="1" num="5"}
{loop $data $r}
<h2><a href="{$r.url}">{$r.title}</a></h2>
<p>{$r.description}</p>
<!-- 内层循环调用该文章的评论 -->
{pc:get model="comment" relationid="$r.id" num="3"}
<ul class="comment_list">
{loop $data $comment}
<li>{$comment.content}</li>
{/loop}
</ul>
{/pc}
{/loop}
{/pc}
relationid="$r.id":这是调用关联数据的关键,$r.id是外层循环中当前文章的ID。
新建和调用 PHPCMS V9 模板的流程可以概括为:
- 建模板:在
statics/html/下创建.php文件,编写HTML结构和{pc}- 建模型:在后台“内容模型管理”中创建模型,定义数据表和字段。
- 填数据:在后台“内容管理”中为模型添加内容。
- 调数据:在模板中使用
{pc}标签,通过model,catid,num等参数获取数据,并用{loop}循环显示。
掌握 {pc} 标签是 PHPCMS V9 模板开发的核心,多加练习就能熟练运用。
