- 核心概念理解:专题、专题模型、模板之间的关系。
- 创建专题:后台操作步骤。
- 专题模板详解:目录结构、常用标签、文件命名规则。
- 实战示例:一个简单的图文专题模板制作流程。
- 常用技巧与注意事项。
核心概念理解
在开始之前,必须理解 PHPCMS V9 专题的三个核心组成部分:

- 专题:这是专题的“容器”或“入口”,在后台创建一个专题,就相当于创建了一个独立的栏目,它包含专题的基本信息(标题、描述、封面图等),并且需要绑定一个专题模型和一个专题模板。
- 专题模型:定义了专题内内容的数据结构,就像文章模型有“标题”、“内容”、“作者”等字段一样,你可以为专题自定义字段,一个“产品评测”专题模型,可以包含“评测产品”、“评测得分”、“评测人”等自定义字段。
- 专题模板:决定了专题页面的最终呈现样式,它是一个 HTML 文件,里面嵌入了 PHPCMS 的模板标签,用于动态调用专题信息、模型数据和内容列表。
关系流程:
创建专题 -> 选择一个专题模型 -> 选择一个专题模板 -> 向专题内添加内容 -> 访问专题页面,看到模板渲染后的效果。
创建专题
这是第一步,也是所有工作的基础。
- 登录后台:使用管理员账号登录你的 PHPCMS V9 后台。
- 进入专题管理:在左侧菜单栏中,找到 ->
专题管理。 - 添加专题:点击右上角的
添加专题按钮。 - 填写专题信息:
- 专题名称:专题的标题,2025年春季新品发布会”。
- 专题目录:专题页面的访问路径,建议使用英文或拼音,
spring-2025,设置后,访问地址就是你的域名/special/spring-2025/。 - 所属栏目:选择专题要归属的父栏目(如果需要)。
- 专题模型:这是关键一步,从下拉列表中选择一个专题模型,如果列表中没有合适的,你需要先去 ->
模型管理->专题模型中创建一个新的模型。 - 专题模板:这也是关键一步,从下拉列表中选择一个专题模板,如果列表中没有,你需要先在模板目录中创建模板文件,然后刷新缓存才能看到。
- 封面图片:专题的代表性图片,通常用于列表页调用。
- :专题的详细介绍,支持 HTML 代码,相当于专题的“前言”或“导语”。
- SEO相关:设置专题的标题、关键词、描述,有利于搜索引擎优化。
- 提交:填写完毕后,点击
提交按钮,专题就创建成功了。
专题模板详解
1 模板目录结构
PHPCMS V9 的模板文件存放在 statics/ 目录下,专题模板的默认路径是:
/statics/templates/你的模板名称/special/

如果你的模板文件夹是 default,那么专题模板就在 /statics/templates/default/special/。
2 文件命名规则
专题模板文件名通常以 special_ 开头,后面跟上专题模型的ID。
- 通用专题模板:如果希望所有专题都使用同一个模板,文件名可以命名为
special_content.html。 - 指定模型模板:如果只为某个特定模型的专题设计模板,文件名应为
special_模型ID.html,模型ID为5的专题模板,文件名就是special_5.html。
如何查看模型ID? -> 模型管理 -> 专题模型,将鼠标悬停在模型名称上,浏览器状态栏会显示模型的ID,或者点击“管理”进入编辑页面,URL中也会有 modelid=5 这样的参数。
3 常用专题模板标签
专题模板主要使用 special 标签库来调用数据。
A. 专题基本信息调用
这部分用于显示专题的标题、封面图、描述等。
{special:get([字段名])}
```: 专题标题
* `description`: 专题描述
* `content`: 专题内容(HTML格式)
* `thumb`: 专题封面图
* `catname`: 专题栏目名称
**示例**:
```html
<h1>{special:get('title')}</h1>
<img src="{special:get('thumb')}" alt="{special:get('title')}" />
<div class="intro">{special:get('content')}</div>
B. 专题内容列表调用
这是专题模板的核心,用于循环输出添加到该专题下的所有内容。
{special:content modelid="[模型ID]" catid="[栏目ID]" num="[条数]" order="[排序方式]"}
<li>
<a href="{$r[url]}">{$r[title]}</a>
<span>{$[inputdate]}</span>
</li>
{/special:content}
标签参数说明:
modelid: 必填的模型ID,必须和你创建专题时选择的模型一致。catid: 必填的栏目ID,注意,这里不是专题本身的栏目ID,而是你存放专题文章的内容栏目ID,你创建了一个名为“专题文章”的栏目(模型为文章模型),所有专题文章都发布在这个栏目下,然后通过专题来聚合它们,这里的catid专题文章”栏目的ID。num: 显示条数,num="10"显示10条。order: 排序方式,常用:id DESC: 按ID降序(最新在前)inputdate DESC: 按发布时间降序(最新在前)visits DESC: 按点击量降序(热门在前)
循环变量 $r:
在 {special:content} 循环体内,$r 代表当前循环到的内容记录,可以通过 $r[字段名] 来调用该内容的字段值。
$r[title]: 标题$r[url]: 内容链接$r[thumb]: 缩略图(如果内容模型有此字段)$r[inputdate]: 发布时间$r[description]: 简介- 自定义字段:如果你的专题模型有自定义字段,
score(评分),那么可以通过$r[score]来调用。
C. 分页标签 列表很多时,需要分页。
<div class="page">
{special:page}
</div>
这个标签会自动生成分页链接,样式可以通过 CSS 来控制。
实战示例:制作一个“图文混排”专题模板
假设我们要做一个“旅游攻略”专题,专题模型为默认的“专题内容”模型,里面的内容都发布在“旅游文章”栏目(ID为 10)下。
目标:制作一个模板,顶部显示专题标题和封面,下方分两列,左侧是文章列表,右侧是热门文章推荐。
步骤:
-
创建模板文件: 在
/statics/templates/default/special/目录下,新建一个文件,命名为special_travel.html(假设专题模型ID是travel,或者直接用special_content.html作为通用模板)。 -
编写模板代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{special:get('title')} - {site_name}</title> <link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css" /> </head> <body> <div class="main"> <!-- 1. 专题头部信息 --> <div class="special-header"> <h1>{special:get('title')}</h1> <img src="{special:get('thumb')}" alt="{special:get('title')}" class="cover-img" /> <p class="special-desc">{special:get('description')}</p> </div> <!-- 2. 专题内容区 --> <div class="content-wrapper"> <!-- 左侧:文章列表 --> <div class="article-list"> <h2>最新攻略</h2> <ul> {special:content modelid="travel" catid="10" num="10" order="inputdate DESC"} <li> <a href="{$r[url]}" title="{$r[title]}"> <img src="{if $r[thumb]}{$r[thumb]}{else}{IMG_PATH}default.jpg{/if}" alt="{$r[title]}"> <h3>{$r[title]}</h3> <p class="summary">{str_cut($r[description], 100)}</p> </a> <span class="date">{date('Y-m-d', $r[inputdate])}</span> </li> {/special:content} </ul> <!-- 分页 --> <div class="page">{special:page}</div> </div> <!-- 右侧:热门推荐 --> <div class="sidebar"> <h2>热门推荐</h2> <ul> {special:content modelid="travel" catid="10" num="5" order="visits DESC"} <li><a href="{$r[url]}">{$r[title]}</a></li> {/special:content} </ul> </div> </div> </div> </body> </html> -
后台应用模板:
- 进入
专题管理,编辑你创建的“旅游攻略”专题。 - 在“专题模板”下拉菜单中,选择你刚刚创建的
special_travel.html。 - 提交保存。
- 进入
-
并访问:
- 发布几篇“旅游文章”到ID为
10的栏目中。 - 在专题管理页面,将这几篇文章添加到你的“旅游攻略”专题里。
- 清理缓存(后台右上角),然后访问专题地址(
你的域名/special/travel/),你就能看到模板渲染后的效果了。
- 发布几篇“旅游文章”到ID为
常用技巧与注意事项
- 缓存问题:修改模板文件后,务必去后台
系统->缓存管理->更新模板缓存,否则看不到效果。 - URL规则:专题的URL规则在
系统->URL规则管理中设置,默认的专题规则是special/{catid}/{id},但专题没有传统的id,而是用目录名访问,PHPCMS V9 的专题规则通常是special/{catdir}/,catdir就是你在创建专题时设置的“专题目录”。 - 内容添加方式可以通过两种方式添加:
- :在后台编辑专题时,有“专题内容”选项卡,可以直接选择已有的内容(来自指定模型和栏目)添加进来。
- 专题投稿:在专题发布页面,可以直接发布新内容到专题中(需要开启此功能)。
- 使用
loop:{special:content}在底层等同于{loop $data $r},如果需要更复杂的逻辑,可以直接使用loop。 - 调试技巧:如果标签不显示输出,可以尝试在模板中加上
debug="1"属性,{special:content modelid="1" debug="1"},这会显示查询的SQL语句,帮助你排查问题。
希望这份详细的指南能帮助你掌握 PHPCMS V9 的专题模板制作!
