1. 核心概念理解:专题、专题模型、模板之间的关系。
  2. 创建专题:后台操作步骤。
  3. 专题模板详解:目录结构、常用标签、文件命名规则。
  4. 实战示例:一个简单的图文专题模板制作流程。
  5. 常用技巧与注意事项

核心概念理解

在开始之前,必须理解 PHPCMS V9 专题的三个核心组成部分:

phpcms v9 专题模板
(图片来源网络,侵删)
  • 专题:这是专题的“容器”或“入口”,在后台创建一个专题,就相当于创建了一个独立的栏目,它包含专题的基本信息(标题、描述、封面图等),并且需要绑定一个专题模型和一个专题模板
  • 专题模型:定义了专题内内容的数据结构,就像文章模型有“标题”、“内容”、“作者”等字段一样,你可以为专题自定义字段,一个“产品评测”专题模型,可以包含“评测产品”、“评测得分”、“评测人”等自定义字段。
  • 专题模板:决定了专题页面的最终呈现样式,它是一个 HTML 文件,里面嵌入了 PHPCMS 的模板标签,用于动态调用专题信息、模型数据和内容列表。

关系流程创建专题 -> 选择一个专题模型 -> 选择一个专题模板 -> 向专题内添加内容 -> 访问专题页面,看到模板渲染后的效果


创建专题

这是第一步,也是所有工作的基础。

  1. 登录后台:使用管理员账号登录你的 PHPCMS V9 后台。
  2. 进入专题管理:在左侧菜单栏中,找到 -> 专题管理
  3. 添加专题:点击右上角的 添加专题 按钮。
  4. 填写专题信息
    • 专题名称:专题的标题,2025年春季新品发布会”。
    • 专题目录:专题页面的访问路径,建议使用英文或拼音,spring-2025,设置后,访问地址就是 你的域名/special/spring-2025/
    • 所属栏目:选择专题要归属的父栏目(如果需要)。
    • 专题模型这是关键一步,从下拉列表中选择一个专题模型,如果列表中没有合适的,你需要先去 -> 模型管理 -> 专题模型 中创建一个新的模型。
    • 专题模板这也是关键一步,从下拉列表中选择一个专题模板,如果列表中没有,你需要先在模板目录中创建模板文件,然后刷新缓存才能看到。
    • 封面图片:专题的代表性图片,通常用于列表页调用。
    • :专题的详细介绍,支持 HTML 代码,相当于专题的“前言”或“导语”。
    • SEO相关:设置专题的标题、关键词、描述,有利于搜索引擎优化。
  5. 提交:填写完毕后,点击 提交 按钮,专题就创建成功了。

专题模板详解

1 模板目录结构

PHPCMS V9 的模板文件存放在 statics/ 目录下,专题模板的默认路径是:

/statics/templates/你的模板名称/special/

phpcms v9 专题模板
(图片来源网络,侵删)

如果你的模板文件夹是 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)下。

目标:制作一个模板,顶部显示专题标题和封面,下方分两列,左侧是文章列表,右侧是热门文章推荐。

步骤

  1. 创建模板文件: 在 /statics/templates/default/special/ 目录下,新建一个文件,命名为 special_travel.html (假设专题模型ID是travel,或者直接用 special_content.html 作为通用模板)。

  2. 编写模板代码

    <!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>
  3. 后台应用模板

    • 进入 专题管理,编辑你创建的“旅游攻略”专题。
    • 在“专题模板”下拉菜单中,选择你刚刚创建的 special_travel.html
    • 提交保存。
  4. 并访问

    • 发布几篇“旅游文章”到ID为 10 的栏目中。
    • 在专题管理页面,将这几篇文章添加到你的“旅游攻略”专题里。
    • 清理缓存(后台右上角),然后访问专题地址(你的域名/special/travel/),你就能看到模板渲染后的效果了。

常用技巧与注意事项

  • 缓存问题:修改模板文件后,务必去后台 系统 -> 缓存管理 -> 更新模板缓存,否则看不到效果。
  • URL规则:专题的URL规则在 系统 -> URL规则管理 中设置,默认的专题规则是 special/{catid}/{id},但专题没有传统的 id,而是用目录名访问,PHPCMS V9 的专题规则通常是 special/{catdir}/catdir 就是你在创建专题时设置的“专题目录”。
  • 内容添加方式可以通过两种方式添加:
    1. :在后台编辑专题时,有“专题内容”选项卡,可以直接选择已有的内容(来自指定模型和栏目)添加进来。
    2. 专题投稿:在专题发布页面,可以直接发布新内容到专题中(需要开启此功能)。
  • 使用loop:{special:content} 在底层等同于 {loop $data $r},如果需要更复杂的逻辑,可以直接使用 loop
  • 调试技巧:如果标签不显示输出,可以尝试在模板中加上 debug="1" 属性,{special:content modelid="1" debug="1"},这会显示查询的SQL语句,帮助你排查问题。

希望这份详细的指南能帮助你掌握 PHPCMS V9 的专题模板制作!