PHPCMS V9 模板制作完整教程

PHPCMS V9 是一款基于 PHP+MySQL 开发的网站管理系统,其模板系统非常灵活,采用了类似 Smarty 的模板引擎语法,理解其工作原理后,制作模板会变得非常简单。

phpcmsv9模板制作教程
(图片来源网络,侵删)

核心概念:模板如何工作?

在开始之前,你必须理解 PHPCMS V9 模板的核心工作流程:

  1. 控制器:当用户访问一个页面(如文章列表、内容页)时,PHPCMS 的控制器会根据请求从数据库中获取数据。
  2. 变量赋值:控制器将获取到的数据(如文章标题、内容、作者等)打包成变量,然后传递给模板引擎。
  3. 模板渲染:模板引擎加载对应的模板文件(.html),并将控制器传递过来的变量值替换掉模板文件中的特定标签。
  4. 输出HTML:模板引擎将替换后的纯 HTML 代码发送到用户的浏览器进行显示。

模板就是 HTML + PHPCMS 标签。 你只需要在 HTML 的相应位置插入 PHPCMS 的特定标签,系统就会自动用数据库里的内容填充这些标签。


准备工作:开发环境搭建

  1. 安装 PHPCMS V9

    • 从 PHPCMS 官网下载最新版的 V9 程序。
    • 解压到你本地或服务器的 Web 根目录(如 htdocswww)。
    • 创建一个数据库,并导入 install.sql 文件。
    • 访问你的域名(如 http://localhost/phpcms/),根据安装向导完成安装,记住你的后台登录地址(通常是 http://localhost/phpcms/phpcms/)。
  2. 推荐开发工具

    phpcmsv9模板制作教程
    (图片来源网络,侵删)
    • 代码编辑器:强烈推荐使用 VS CodeSublime TextDreamweaver,它们支持语法高亮,能让你更清晰地看到模板标签。
    • FTP/SFTP 工具:用于将本地制作好的模板文件上传到服务器。

模板目录结构

PHPCMS V9 的模板文件存放在 /statics/ 目录下,一个标准的模板目录结构如下:

/statics/
├── default/          <-- 默认模板目录,所有新模板都建议在这里创建自己的文件夹
│   ├── images/       <-- 存放模板用到的图片
│   ├── js/           <-- 存放模板用到的 JavaScript 文件
│   ├── css/          <-- 存放模板用到的 CSS 样式文件
│   └── template/     <-- 核心目录,存放所有页面模板文件
│       ├── index/    <-- 首页模板目录
│       │   └── index.html
│       ├── content/  <-- 内容页模板目录
│       │   └── show.html
│       └── list/     <!-- 列表页模板目录
│           └── index.html
└── ... (其他模板)

重要提示/statics/default/ 是系统默认的模板文件夹,为了避免升级时覆盖你的模板,强烈建议不要修改 default 文件夹,而是复制一份并重命名(my_template),然后在后台选择使用这个新模板。


核心模板标签详解

这是模板制作的核心部分,PHPCMS 的标签分为两类:系统标签数据调用标签

系统标签

系统标签用于获取网站的全局信息,如网站名称、版权信息等。

  • {site_name}:网站名称
  • {site_title}
  • {site_keywords}:网站关键词
  • {site_description}:网站描述
  • {site_url}:网站根目录 URL
  • {template_url}:当前模板目录 URL (非常常用,用于引入 CSS 和 JS)
  • {CSS_PATH}:等同于 {template_url}css/
  • {JS_PATH}:等同于 {template_url}js/
  • {IMG_PATH}:等同于 {template_url}images/

示例:在 <head> 标签中引入 CSS 文件。

<head>
    <meta charset="utf-8">{site_title}</title>
    <link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css">
    <script type="text/javascript" src="{JS_PATH}jquery.min.js"></script>
</head>

数据调用标签

数据调用标签用于从数据库中动态获取内容,如文章列表、文章详情等。

基本语法{pc:get sql="..." cache="..." num="..." return="data"}

{loop $data $r}
    <!-- 在这里使用 $r 变量来访问每条数据的字段 -->
    <li><a href="{$r[url]}">{$r[title]}</a></li>
{/loop}
  • sql: 数据库查询语句(最核心的部分)。
  • cache: 缓存时间,单位为秒,设为 0 表示不缓存,开启缓存可以显著提升网站性能。
  • num: 获取的数据条数。
  • return: 定义一个变量名来接收数据,默认是 data
  • {loop $data $r}: 这是一个循环。$datareturn 定义的变量,$r 是循环中每一条数据的数组变量。
  • {$r[字段名]}: 通过 $r 变量来访问具体字段的值,如 {$r[title]} 是文章标题,{$r[thumb]} 是文章缩略图,{$r[url]} 是文章链接。

常用数据表

  • v9_news: 新闻文章表
  • v9_page: 单页面表
  • v9_category: 栏目表

制作一个完整的首页模板

假设我们要制作一个包含网站 Logo、主导航、文章列表(头条、推荐、最新)和页脚的首页。

步骤 1:创建模板文件/statics/default/template/ 目录下创建一个名为 index 的文件夹,并在其中创建 index.html 文件。

步骤 2:编写 HTML 结构

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{site_title}</title>
    <link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css">
</head>
<body>
    <!-- 头部 -->
    <div class="header">
        <div class="logo"><a href="{site_url}"><img src="{IMG_PATH}logo.png" alt="{site_name}"></a></div>
        <div class="nav">
            <!-- 导航菜单,我们稍后用标签实现 -->
        </div>
    </div>
    <!-- 内容区 -->
    <div class="content">
        <!-- 头条新闻 -->
        <div class="headline">
            <!-- 我们稍后用标签调用头条新闻 -->
        </div>
        <!-- 左侧文章列表 -->
        <div class="main">
            <div class="list">
                <!-- 我们稍后用标签调用推荐文章列表 -->
            </div>
        </div>
        <!-- 右侧边栏 -->
        <div class="sidebar">
            <!-- 我们稍后用标签调用最新文章和热门标签 -->
        </div>
    </div>
    <!-- 页脚 -->
    <div class="footer">
        <p>Copyright &copy; {date('Y', time())} {site_name}. All Rights Reserved.</p>
    </div>
</body>
</html>

步骤 3:填充 PHPCMS 标签

我们将用 PHPCMS 标签替换掉 HTML 中的注释部分。

调用主导航菜单

导航通常来自 v9_category 表,且需要是顶级栏目。

<div class="nav">
    <ul>
        {pc:get sql="SELECT catid,catname,style,url FROM `v9_category` WHERE `parentid`=0 AND `menu`=1 ORDER BY listorder ASC" cache="3600" num="10" return="nav"}
            {loop $nav $n}
                <li><a href="{$n[url]}">{$n[catname]}</a></li>
            {/loop}
        {/pc}
    </ul>
</div>
  • parentid=0: 表示顶级栏目。
  • menu=1: 表示在导航菜单中显示。

调用头条新闻

头条新闻通常是 v9_news 表中 posid 字段为 1 的文章。

<div class="headline">
    {pc:get sql="SELECT title,url,thumb FROM `v9_news` WHERE `posid`=1 ORDER BY `updatetime` DESC" cache="3600" num="5" return="headline"}
        {loop $headline $h}
            <dl>
                <dt><a href="{$h[url]}" target="_blank"><img src="{$h[thumb]}" alt="{$h[title]}"></a></dt>
                <dd><a href="{$h[url]}" target="_blank">{$h[title]}</a></dd>
            </dl>
        {/loop}
    {/pc}
</div>

调用推荐文章列表

假设我们要调用 ID 为 5 的栏目下的推荐文章。

<div class="list">
    <h2>推荐文章</h2>
    {pc:get sql="SELECT title,url,description FROM `v9_news` WHERE `catid`=5 AND `status`=1 ORDER BY `id` DESC" cache="3600" num="10" return="list"}
        <ul>
            {loop $list $l}
                <li><a href="{$l[url]}" target="_blank">{$l[title]}</a><span class="date">{date('Y-m-d', $l[inputtime])}</span></li>
            {/loop}
        </ul>
    {/pc}
</div>
  • catid=5: 指定栏目 ID。
  • status=1: 表示已发布的文章。
  • inputtime: 发布时间,我们用 date 函数格式化它。

调用最新文章和热门标签

<div class="sidebar">
    <!-- 最新文章 -->
    <div class="box">
        <h3>最新文章</h3>
        {pc:get sql="SELECT title,url FROM `v9_news` WHERE `status`=1 ORDER BY `id` DESC" cache="3600" num="10" return="new"}
            <ul>
                {loop $new $n}
                    <li><a href="{$n[url]}" target="_blank">{$n[title]}</a></li>
                {/loop}
            </ul>
        {/pc}
    </div>
    <!-- 热门标签 -->
    <div class="box">
        <h3>热门标签</h3>
        {pc:get sql="SELECT tagname FROM `v9_keyword` ORDER BY `searchnums` DESC" cache="3600" num="20" return="tags"}
            {loop $tags $t}
                <a href="{site_url}index.php?m=content&c=tag&catid=0&tag={urlencode($t[tagname])}">{$t[tagname]}</a>
            {/loop}
        {/pc}
    </div>
</div>
  • urlencode(): 对标签名进行 URL 编码,确保链接正确。

后台设置与切换

  1. 登录后台:访问 http://你的域名/phpcms/phpcms/
  2. 进入模板管理:在左侧菜单中找到 ” -> “模板管理”
  3. 选择站点和模块:确保你选择了正确的站点和模块(通常是“内容模块”)。
  4. 选择模板:在模板列表中,你应该能看到你刚才制作的 default 模板,点击“使用”按钮将其设为当前默认模板。
  5. 生成首页:进入 ” -> “生成首页”,点击“生成首页”按钮,系统会根据你的 index.html 模板生成静态的首页 HTML 文件。

访问你的网站首页,就能看到你制作的模板效果了!


进阶技巧

  1. 模板继承 ({template})

    • 多个页面(如列表页、内容页)可能有相同的头部和底部,为了避免重复代码,你可以创建一个 header.htmlfooter.html
    • 在其他页面中,使用 {template "header"}{template "footer"} 来引入它们。

    header.html:

    <!DOCTYPE html>
    <html>
    <head>
        <title>{site_title}</title>
        <!-- ... -->
    </head>
    <body>
        <div class="header">...</div>

    index.html:

    {template "header"}
    <div class="content">...</div>
    {template "footer"}
    </body>
    </html>
  2. 自定义页面

    • 如果想做一个“关于我们”这种固定内容的页面,可以在后台 ” -> “页面管理” 中添加一个新页面。
    • 填写页面名称和内容(支持 HTML 和标签),系统会自动生成一个静态页面。
  3. 调试技巧

    • 如果标签不显示内容,可能是 SQL 查询有问题,可以尝试在 sql 语句后面加上 debug="1",如 {pc:get sql="..." debug="1"},页面会打印出 SQL 语句和查询结果,方便你调试。
  4. 使用循环判断

    • {loop} 循环中,可以使用 {$key} 来获取当前循环的索引(从 0 开始)。
    • 可以用来隔行变色:<li class="{if $key % 2 == 0}even{/if}">...</li>

制作 PHPCMS V9 模板的核心就是 “HTML + 标签”

  1. 搭建环境:安装 PHPCMS,熟悉目录结构。
  2. 掌握标签:重点理解系统标签和数据调用标签 ({pc}) 的用法。
  3. 从简到繁:先制作一个静态的 HTML 页面,然后用 PHPCMS 标签替换动态内容。
  4. 后台配合:学会在后台切换模板和生成页面。
  5. 勤于调试:利用 debug 功能解决标签不显示的问题。

希望这份详细的教程能帮助你顺利掌握 PHPCMS V9 的模板制作!祝你成功!