PHPCMS(特指其经典版本,如 V9)的模板系统非常灵活且强大,理解其默认模板的结构和工作原理是进行二次开发和定制化的基础。

(图片来源网络,侵删)
默认模板的核心思想:MVC 分离
PHPCMS 的模板系统严格遵循 MVC(Model-View-Controller) 设计模式:
- Model (模型): 对应
phpcms/model/目录下的 PHP 文件,负责数据处理和业务逻辑,文章模型content_model.php。 - View (视图): 对应
phpcms/templates/目录下的 HTML 文件,负责数据展示,也就是我们所说的“模板文件”。 - Controller (控制器): 对应
phpcms/modules/目录下的 PHP 文件,负责接收用户请求,调用 Model 获取数据,并加载 View 将数据渲染后呈现给用户。
这种分离使得代码结构清晰,逻辑和表现分离,便于维护和扩展。
默认模板的目录结构
PHPCMS 的默认模板文件都存放在 phpcms/templates/ 目录下,这个目录的结构通常如下:
phpcms/
└── templates/
├── default/ # 默认模板文件夹
│ ├── content/ # 内容模块的模板
│ │ ├── index/ # 首页相关模板
│ │ │ ├── index.html # 网站首页
│ │ │ └── category.html # 栏目首页
│ │ ├── show/ # 内容详情页模板
│ │ │ └── show.html # 文章/内容详情页
│ │ └── ... # 其他内容相关页面
│ ├── member/ # 会员中心模块的模板
│ │ ├── index/ # 会员中心首页
│ │ └── ... # 其他会员相关页面
│ ├── search/ # 搜索模块的模板
│ │ └── index.html
│ └── ... # 其他模块的模板
│
└── ... # 其他自定义模板文件夹
关键点:

(图片来源网络,侵删)
default是默认的模板名称,你在后台设置的模板风格就是指向这个文件夹。- 每个模块(如内容模块
content,会员模块member)都有自己的子目录。 - 每个模块下又根据页面类型(如首页
index、列表页category、详情页show)再创建子目录。
默认模板的核心文件解析
我们以最常见的 网站首页 和 文章详情页 为例,来解析默认模板的结构。
网站首页 (phpcms/templates/default/content/index/index.html)
一个典型的首页模板文件通常由三部分组成:头部、主体 和 底部,这通过 include 标签来实现。
{template "content","header"} <!-- 加载头部模板 -->
<!-- 主体内容开始 -->
<div class="main">
<!-- 调用首页推荐位内容 -->
{pc:get sql="SELECT * FROM v9_news WHERE posid=5 order BY id DESC" num="5" return="data"}
{loop $data $r}
<a href="{$r.url}">{$r.title}</a>
{/loop}
{/pc}
<!-- 调用指定栏目下的文章列表 -->
{pc:content action="lists" catid="10" num="10" order="id DESC" page="$page"}
{loop $data $r}
<li><a href="{$r.url}">{$r.title}</a></li>
{/loop}
<!-- 分页代码 -->
<div class="page">{$pages}</div>
{/pc}
</div>
<!-- 主体内容结束 -->
{template "content","footer"} <!-- 加载底部模板 -->
代码解析:
{template "content","header"}: 这是一个模板包含标签,用于加载phpcms/templates/default/content/header.html文件,头部通常包含网站 logo、主导航菜单等。{pc:get ...}和{pc:content ...}: 这是 PHPCMS 最核心的 数据调用标签。pc:get: 用于执行任意 SQL 查询,灵活性高。pc:content: 专门用于调用内容模型的数据,功能更强大,推荐使用。action="lists": 表示调用列表数据。catid="10": 指定要调用的栏目 ID。num="10": 指定获取的数据条数。order="id DESC": 指定排序方式。page="$page": 启用分页功能。return="data": 将查询结果存入$data变量。
{loop $data $r}: 循环标签,用于遍历pc标签获取到的数据。$data是数据数组,$r是当前循环到的数据元素(一个数组)。{$r.title}和{$r.url}: 变量输出标签。$r.title输出文章标题,$r.url输出文章的 URL 地址,PHPCMS 会自动处理相对路径,生成完整的 URL。{$pages}: 分页标签,输出分页链接。{template "content","footer"}: 加载底部模板,通常包含版权信息、友情链接等。
文章详情页 (phpcms/templates/default/content/show/show.html)
详情页的模板结构相对简单,主要就是展示单条内容。
{template "content","header"}
<div class="main">
<!-- 获取当前文章的信息 -->
{pc:content action="show" catid="$catid" id="$id" num="1"}
{loop $data $r}
<h1>{$r.title}</h1>
<div class="info">作者:{$r.author} 发布时间:{date('Y-m-d H:i:s', $r.inputtime)} 点击:{$r.hits}</div>
<div class="content">
{$r.content}
</div>
{/loop}
{/pc}
<!-- 上一篇/下一篇 -->
{pc:content action="relation" catid="$catid" id="$id" num="2" return="data"}
{loop $data $r}
<a href="{$r.url}">{$r.title}</a>
{/loop}
{/pc}
</div>
{template "content","footer"}
代码解析:
{pc:content action="show" ...}: 这是调用单条内容详情的标签。action="show": 表示调用详情数据。catid="$catid"和id="$id": 这两个变量是系统自动传递的,代表当前栏目 ID 和内容 ID,无需手动赋值。
{$r.content}: 输出文章的正文内容,正文内容中如果包含图片、视频等多媒体,它们也会被原样输出。{date('Y-m-d H:i:s', $r.inputtime)}: 日期格式化标签,用于将时间戳转换为可读的日期格式。{pc:content action="relation" ...}: 调用相关文章,如“上一篇”和“下一篇”。
模板引擎与常用标签
PHPCMS 使用自己的模板引擎,支持丰富的标签和函数。
| 用途 | 示例 | |
|---|---|---|
{template "模块名","文件名"} |
包含其他模板文件 | {template "content","header"} |
{pc:content ...} |
核心标签,用于调用内容数据 | {pc:content action="lists" catid="10" num="5"} |
{pc:get ...} |
核心标签,用于执行自定义 SQL | {pc:get sql="..." num="5" return="data"} |
{loop $数组 $变量} |
循环遍历数组 | {loop $data $r} ... {/loop} |
{$变量.字段} |
输出变量值 | {$r.title}, {$r.content} |
{if condition}...{else}...{/if} |
条件判断 | {if $r.iscommend}推荐{/if} |
{date('格式', 时间戳)} |
格式化日期 | {date('Y-m-d', $r.inputtime)} |
{function name="函数名" ...} |
调用PHP函数 | {function name="str_cut" v="$r.title" len="20"} |
{$pages} |
输出分页 | - |
如何修改默认模板?
-
通过后台修改(推荐):
- 登录 PHPCMS 后台。
- 进入 ” -> “模板管理”。
- 在这里你可以看到所有模块的模板列表,你可以直接在线编辑、上传、删除模板文件,这是最安全、最方便的方式。
-
直接修改文件(需谨慎):
- 通过 FTP 或文件管理器,连接到你的服务器。
- 进入
phpcms/templates/default/目录。 - 找到你想修改的模板文件(如
index.html),用代码编辑器(如 VS Code, Sublime Text)打开并修改。 - 注意:直接修改文件前,务必先备份!因为错误的代码可能导致网站无法正常显示。
PHPCMS 的默认模板是一个结构清晰、逻辑分明的系统,掌握其核心要点:
- 目录结构:
templates/模块/页面类型/模板文件 - MVC 分离: 模板只负责展示,不处理逻辑。
- 核心标签:
{template}用于布局,{pc:content}和{pc:get}用于数据,{loop}用于循环。 - 变量输出: 使用
{$var}语法。
理解了这些,你就可以轻松地对 PHPCMS 默认模板进行修改,或者基于它创建一套全新的、个性化的网站模板。
