PHPCMS V9 的模板引擎是 PHPTemplate,其核心思想是使用 大括号 来调用系统变量、函数和逻辑。

(图片来源网络,侵删)
核心概念:模板的构成
一个栏目首页模板主要由以下几个部分组成:
- HTML/CSS/JS 结构:这是页面的骨架,决定了页面的外观和布局。
- 系统变量:通过
{$xxx}的形式调用系统预定义好的变量,如网站名称、栏目名称等。 - 内容列表循环:通过
{loop $xxx $key $val}循环标签,遍历并输出该栏目下的所有文章列表。 - 分页代码:通过
{pages}标签,实现文章列表的分页功能。 - 其他功能标签:如调用推荐位内容、友情链接、幻灯片等。
制作一个标准的栏目首页模板
下面我们一步步来构建一个常见的“文章列表”类型的栏目首页。
步骤 1:创建模板文件
- 登录 PHPCMS V9 后台。
- 进入 ->
模板->管理模板。 - 在左侧选择你当前使用的 风格包。
- 点击右上角的
添加模板按钮。 - 填写模板信息:
- 模块名:选择
content(内容模块)。 - 菜单分类:选择
content(内容模块)。 - 模板名:填写一个易于识别的名称,如
栏目首页默认模板。 - 类型:选择
PC。 - 模板标识:这是最重要的! 填写一个唯一的标识符,
category_index,我们后续创建栏目时会用到这个标识。 - 在这里粘贴你的 HTML 代码和模板标签。
- 模块名:选择
- 点击
提交保存。
步骤 2:编写模板代码(以 category_index 为例)
下面是一个完整的栏目首页模板示例,包含了头部、栏目信息、文章列表、分页和底部。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">{$category['catname']} - {$site_name}</title>
<meta name="keywords" content="{$category['keywords']}">
<meta name="description" content="{$category['description']}">
<link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css" />
</head>
<body>
<!-- 头部 -->
{template "content","header"}
<!-- 主体内容区 -->
<div class="main">
<!-- 左侧:栏目列表 -->
<div class="left">
<!-- 当前栏目信息 -->
<div class="category-info">
<h2>{$category['catname']}</h2>
<p class="description">{$category['description']}</p>
</div>
<!-- 文章列表循环开始 -->
{loop $infos $key $val}
<div class="article-item">
<h3><a href="{$val['url']}">{$val['title']}</a></h3>
<div class="info">
<span>发布时间:{date('Y-m-d H:i:s', $val['inputtime'])}</span>
<span>浏览次数:{$val['hits']}</span>
<span>作者:{$val['username']}</span>
</div>
<div class="summary">
{str_cut($val['description'], 150)}...
</div>
</div>
{/loop}
<!-- 文章列表循环结束 -->
<!-- 分页代码 -->
<div class="page">
{$pages}
</div>
</div>
<!-- 右侧:边栏 -->
<div class="right">
<!-- 调用推荐位内容(例如ID为1的推荐位) -->
{pc:content action="position" posid="1" num="5"}
<div class="hot-articles">
<h3>热门推荐</h3>
<ul>
{loop $data $key $val}
<li><a href="{$val['url']}">{$val['title']}</a></li>
{/loop}
</ul>
</div>
{/pc}
<!-- 友情链接 -->
{pc:link action="type" typeid="1" num="10"}
<div class="links">
<h3>友情链接</h3>
<ul>
{loop $data $key $val}
<li><a href="{$val['url']}" target="_blank">{$val['name']}</a></li>
{/loop}
</ul>
</div>
{/pc}
</div>
</div>
<!-- 底部 -->
{template "content","footer"}
</body>
</html>
代码详解
核心变量和标签
-
{$category}: 一个数组,包含当前栏目的所有信息。
(图片来源网络,侵删){$category['catname']}: 栏目名称。{$category['keywords']}: 栏目关键词。{$category['description']}: 栏目描述。{$category['url']}: 栏目首页地址(虽然不常用,但存在)。
-
{$site_name}: 网站名称。 -
{template "content","header"}: 引入公共头部模板。content是模块名,header是模板文件名(不带后缀)。 -
{loop $infos $key $val}: 最核心的列表循环标签。$infos: 系统变量,存储了当前栏目下的文章列表数据,这个变量是 PHPCMS 在解析模板前自动准备好的。$key: 循环的索引(从0开始)。$val: 循环的单条数据,是一个数组,代表一篇文章的所有信息。
-
变量 (
$val数组):
(图片来源网络,侵删){$val['title']}: 文章标题。{$val['url']}: 文章的完整链接,强烈推荐使用这个,能自动处理伪静态。{$val['inputtime']}: 文章发布时间的时间戳。{$val['hits']}: 文章点击数(浏览次数)。{$val['description']}:{$val['username']}: 发布者。{$val['thumb']}: 文章缩略图地址。
-
{str_cut($string, $length)}: 字符串截取函数,常用于截取摘要或标题,防止页面布局错乱,示例:{str_cut($val['description'], 150)}截取150个字符。 -
{date('格式', $timestamp)}: 日期格式化函数,示例:{date('Y-m-d H:i:s', $val['inputtime'])}将时间戳格式化为2025-10-27 10:30:00。 -
{$pages}: 分页代码,会自动根据后台设置生成上一页、下一页、页码等链接。
其他常用功能标签
-
调用推荐位内容:
{pc:content action="position" posid="推荐位ID" num="显示数量"} {loop $data $key $val} <a href="{$val['url']}">{$val['title']}</a> {/loop} {/pc}action="position": 表示调用推荐位。posid: 推荐位的ID,你可以在后台内容 -> 推荐位管理中查看。num: 显示几条内容。$data: 循环的数据变量。
-
调用友情链接:
{pc:link action="type" typeid="链接类型ID" num="显示数量"} {loop $data $key $val} <a href="{$val['url']}" target="_blank">{$val['name']}</a> {/loop} {/pc}action="type": 表示按类型调用。typeid: 链接类型的ID,在后台扩展 -> 友情链接中管理。
如何将模板应用到栏目
-
创建栏目:
- 进入 ->
分类信息(如果是文章栏目) 或其他相应模块。 - 添加一个新栏目,或者编辑一个现有栏目。
- 在“栏目设置”中,找到 “选择模板” 选项。
- 从下拉列表中选择你刚刚创建的模板(标识符为
category_index的那个)。 - 保存栏目。
- 进入 ->
-
验证:
- 访问你刚刚设置的这个栏目首页。
- 如果栏目下有文章,你应该能看到文章列表、分页以及你在模板中设置的其他内容。
- 如果没有内容,列表区域会是空的,但分页标签(
{$pages})仍然会显示。
常见问题与调试
-
为什么列表没有内容?
- 检查该栏目下是否已经发布了文章。
- 检查文章是否被审核通过。
- 检查文章的“推荐位”是否与调用标签冲突(虽然不影响列表,但可能导致逻辑混乱)。
- 确保你使用的模板变量是
$infos,而不是其他变量名。
-
为什么链接打不开或404?
- 务必使用
{$val['url']}来生成文章链接,这是最规范、最可靠的方式。 - 检查后台的
URL规则设置 (内容 -> URL规则),确保伪静态规则已正确配置并生效。
- 务必使用
-
如何调试模板?
- 最简单的方法是直接在模板文件中使用
print_r()或var_dump()来打印变量,查看其结构。 - 你想看看
$val里都有什么数据,可以在循环内添加:{loop $infos $key $val} <pre>{print_r($val)}</pre> <!-- 你的正常代码 --> {/loop} - 这会以清晰的方式显示一篇文章的所有字段,方便你找到需要调用的变量名。
- 最简单的方法是直接在模板文件中使用
希望这份详细的指南能帮助你顺利掌握 PHPCMS V9 的栏目首页模板制作!
