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

phpcms v9 栏目首页模板
(图片来源网络,侵删)

核心概念:模板的构成

一个栏目首页模板主要由以下几个部分组成:

  1. HTML/CSS/JS 结构:这是页面的骨架,决定了页面的外观和布局。
  2. 系统变量:通过 {$xxx} 的形式调用系统预定义好的变量,如网站名称、栏目名称等。
  3. 内容列表循环:通过 {loop $xxx $key $val} 循环标签,遍历并输出该栏目下的所有文章列表。
  4. 分页代码:通过 {pages} 标签,实现文章列表的分页功能。
  5. 其他功能标签:如调用推荐位内容、友情链接、幻灯片等。

制作一个标准的栏目首页模板

下面我们一步步来构建一个常见的“文章列表”类型的栏目首页。

步骤 1:创建模板文件

  1. 登录 PHPCMS V9 后台。
  2. 进入 -> 模板 -> 管理模板
  3. 在左侧选择你当前使用的 风格包
  4. 点击右上角的 添加模板 按钮。
  5. 填写模板信息:
    • 模块名:选择 content (内容模块)。
    • 菜单分类:选择 content (内容模块)。
    • 模板名:填写一个易于识别的名称,如 栏目首页默认模板
    • 类型:选择 PC
    • 模板标识这是最重要的! 填写一个唯一的标识符,category_index,我们后续创建栏目时会用到这个标识。
    • 在这里粘贴你的 HTML 代码和模板标签。
  6. 点击 提交 保存。

步骤 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}: 一个数组,包含当前栏目的所有信息。

    phpcms v9 栏目首页模板
    (图片来源网络,侵删)
    • {$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 数组):

    phpcms v9 栏目首页模板
    (图片来源网络,侵删)
    • {$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,在后台 扩展 -> 友情链接 中管理。

如何将模板应用到栏目

  1. 创建栏目

    • 进入 -> 分类信息 (如果是文章栏目) 或其他相应模块。
    • 添加一个新栏目,或者编辑一个现有栏目。
    • 在“栏目设置”中,找到 “选择模板” 选项。
    • 从下拉列表中选择你刚刚创建的模板(标识符为 category_index 的那个)。
    • 保存栏目。
  2. 验证

    • 访问你刚刚设置的这个栏目首页。
    • 如果栏目下有文章,你应该能看到文章列表、分页以及你在模板中设置的其他内容。
    • 如果没有内容,列表区域会是空的,但分页标签({$pages})仍然会显示。

常见问题与调试

  • 为什么列表没有内容?

    1. 检查该栏目下是否已经发布了文章。
    2. 检查文章是否被审核通过。
    3. 检查文章的“推荐位”是否与调用标签冲突(虽然不影响列表,但可能导致逻辑混乱)。
    4. 确保你使用的模板变量是 $infos,而不是其他变量名。
  • 为什么链接打不开或404?

    1. 务必使用 {$val['url']} 来生成文章链接,这是最规范、最可靠的方式。
    2. 检查后台的 URL规则 设置 (内容 -> URL规则),确保伪静态规则已正确配置并生效。
  • 如何调试模板?

    • 最简单的方法是直接在模板文件中使用 print_r()var_dump() 来打印变量,查看其结构。
    • 你想看看 $val 里都有什么数据,可以在循环内添加:
      {loop $infos $key $val}
          <pre>{print_r($val)}</pre>
          <!-- 你的正常代码 -->
      {/loop}
    • 这会以清晰的方式显示一篇文章的所有字段,方便你找到需要调用的变量名。

希望这份详细的指南能帮助你顺利掌握 PHPCMS V9 的栏目首页模板制作!