1. 创建模板文件
  2. 模型和数据
  3. 在模板中调用数据

第一步:创建模板文件

模板文件通常存放在 statics/ 目录下,并按照栏目ID或模板风格进行组织。

phpcms v9 新建模板的调用
(图片来源网络,侵删)

确定模板存放位置

模板文件有两个主要的存放位置,根据用途选择:

  • 栏目模板:用于显示特定栏目的内容列表或内容详情。

    • 路径:statics/你的模板名称/html/ (statics/default/html/)
    • 文件名规则:
      • 列表页category_栏目ID_模板风格.php (category_1.php)
      • 详情页show_栏目ID_模板风格.php (show_1.php)
      • 如果所有栏目共用一个模板,可以省略 栏目ID,直接使用 category.phpshow.php
  • 首页模板:用于网站首页。

    • 路径:statics/你的模板名称/html/
    • 文件名:index.php

编写模板代码

模板文件是标准的 HTML 文件,在其中嵌入 PHPCMS 的模板标签,每个模板文件的开头最好加上模板的注释,方便管理。

phpcms v9 新建模板的调用
(图片来源网络,侵删)

示例:创建一个简单的首页模板 statics/default/html/index.php

{template "content","header"} <!-- 引入公共头部文件,如 header.php -->
<div class="main">
    <h1>网站首页</h1>
    <!-- 这里是调用内容的地方,我们将在第三步详细说明 -->
    <div class="news_list">
        {pc:get sql="SELECT * FROM v9_news ORDER BY id DESC" num="10" return="data"}
            {loop $data $r}
            <li>
                <a href="{$r.url}">{$r.title}</a>
                <span class="time">{date('Y-m-d H:i:s', $r.inputtime)}</span>
            </li>
            {/loop}
        {/pc}
    </div>
</div>
{template "content","footer"} <!-- 引入公共底部文件,如 footer.php -->

第二步:定义内容模型和数据

模板只是“外壳”,你需要有数据才能显示,在 PHPCMS V9 中,数据是通过“内容模型”来管理的。

模型

  1. 登录 PHPCMS V9 后台。
  2. 进入 内容 -> 内容模型管理
  3. 点击 “添加模型”
  4. 模型名称:给你的模型起个名字,新闻模型”。
  5. 表名:系统会自动生成一个表名,通常是 v9_模型名称v9_news请记住这个表名,在模板调用时需要用到。
  6. 内容字段:这是最关键的一步,点击 “添加字段” 来定义你的数据结构。
    • 字段名:英文,如 title, author, content
    • :中文,如“标题”、“作者”、“内容”。
    • 字段类型:根据需要选择,如“文本”、“文本域”、“编辑器”、“时间”等。
    • 表单元素:系统会根据类型自动匹配,如“文本输入框”、“多行文本框”、“FCK编辑器”等。
  7. 保存模型,系统会自动在数据库中创建对应的表。
  1. 进入 内容 -> 内容管理
  2. 选择你刚才创建的模型(新闻模型”)。
  3. 点击
  4. 在表单中填写你刚才定义的字段内容,如标题、内容等。

你的数据库的 v9_news 表里就有了数据。


第三步:在模板中调用数据

这是核心环节,PHPCMS V9 使用 {pc} 标签来获取数据。

{pc} 标签的基本语法

{pc:get 参数1="值1" 参数2="值2" ...}
    {loop $返回的数据变量 $循环变量}
        // 循环体,使用 {$循环变量.字段名} 来显示数据
    {/loop}
{/pc}

常用参数详解

参数 说明 示例
action 必需,指定要执行的操作。 action="lists" (获取列表), action="content" (获取单条内容)
model 必需,指定要查询的数据模型。 model="news" (对应 v9_news 表)
siteid 站点ID,默认为1,多站点时使用。 siteid="1"
catid 栏目ID,用于获取指定栏目的内容。 catid="5"
num 获取数据的数量。 num="10" (获取10条)
order 数据排序方式。 order="id DESC" (按ID降序), order="inputtime ASC" (按发布时间升序)
page 是否开启分页。 page="1" (开启分页)
return 定义返回数据的变量名。 return="data" (默认就是 data,可以省略)
sql 高级用法,直接写原生SQL语句。 sql="SELECT * FROM v9_news WHERE status=1"

实例演示

假设我们有一个“新闻”模型,表名为 v9_news,我们想在首页调用最新的10条新闻。

直接调用模型数据(不按栏目)

{pc:get model="news" num="10" order="id DESC"}
    <ul class="news_list">
        {loop $data $r}
        <li>
            <a href="{$r.url}">{$r.title}</a>
            <span>{date('Y-m-d', $r.inputtime)}</span>
        </li>
        {/loop}
    </ul>
{/pc}
  • model="news":告诉系统去 v9_news 表查数据。
  • num="10":只取10条。
  • order="id DESC":按ID从大到小排序,即最新的在最前面。
  • {loop $data $r}:循环遍历获取到的数据集。$data{pc} 标签返回的数组,$r 是当前循环到的元素(一条数据)。
  • {$r.title}:输出这条新闻的 title 字段值。
  • {$r.url}:这是一个特殊变量,PHPCMS会自动根据内容ID生成其详情页的URL。非常推荐使用,而不是手动拼接。
  • {$r.inputtime}的发布时间戳。

调用指定栏目的内容

假设新闻栏目ID为 5

{pc:get model="news" catid="5" num="10" order="id DESC"}
    <ul class="news_list">
        {loop $data $r}
        <li>
            <a href="{$r.url}">{$r.title}</a>
        </li>
        {/loop}
    </ul>
{/pc}

只需增加 catid="5" 参数即可。

调用并开启分页

{pc:get model="news" catid="5" num="10" order="id DESC" page="1"}
    <ul class="news_list">
        {loop $data $r}
        <li>
            <a href="{$r.url}">{$r.title}</a>
        </li>
        {/loop}
    </ul>
    <!-- 分页代码 -->
    <div class="page">
        {$pages}
    </div>
{/pc}

增加 page="1" 开启分页,然后在循环结束后使用 {$pages} 变量来输出分页导航。


高级技巧

引入公共模板

为了代码复用,通常会将页头、页脚、侧边栏等做成独立的模板文件。

  • 创建公共模板:在 statics/你的模板名称/html/content/ 目录下创建 header.php, footer.php 等。
  • 在主模板中引入
    {template "content","header"}
    <!-- 页面主体内容 -->
    {template "content","footer"}

使用子循环

一个 {pc} 标签内可以再嵌套另一个 {pc} 标签,用于调用关联数据。

<!-- 外层循环调用文章 -->
{pc:get model="article" catid="1" num="5"}
    {loop $data $r}
        <h2><a href="{$r.url}">{$r.title}</a></h2>
        <p>{$r.description}</p>
        <!-- 内层循环调用该文章的评论 -->
        {pc:get model="comment" relationid="$r.id" num="3"}
            <ul class="comment_list">
                {loop $data $comment}
                    <li>{$comment.content}</li>
                {/loop}
            </ul>
        {/pc}
    {/loop}
{/pc}
  • relationid="$r.id":这是调用关联数据的关键,$r.id 是外层循环中当前文章的ID。

新建和调用 PHPCMS V9 模板的流程可以概括为:

  1. 建模板:在 statics/html/ 下创建 .php 文件,编写HTML结构和 {pc}
  2. 建模型:在后台“内容模型管理”中创建模型,定义数据表和字段。
  3. 填数据:在后台“内容管理”中为模型添加内容。
  4. 调数据:在模板中使用 {pc} 标签,通过 model, catid, num 等参数获取数据,并用 {loop} 循环显示。

掌握 {pc} 标签是 PHPCMS V9 模板开发的核心,多加练习就能熟练运用。