Supesite 7.5 是一个非常经典的 PHP 门户建站系统,虽然现在已不再是主流,但其模板系统设计得相当灵活和强大,理解它对于维护或二次开发老项目非常有帮助。

supesite 7.5 模板
(图片来源网络,侵删)

核心概念:模板引擎

Supesite 7.5 使用的是 PHP 自身作为模板引擎,这意味着它的模板文件本质上就是 PHP 文件,但混合了一套自定义的标签语法,这套语法非常直观,对于熟悉 PHP 的开发者来说,上手非常快。

模板文件结构:

一个完整的 Supesite 站点通常由三部分构成:

  1. 模板文件.htm 文件,包含了 HTML 结构和 Supesite 的模板标签。
  2. 风格文件:主要是 CSS 文件(.css),用于控制网站的视觉样式。
  3. 图片等资源文件:存放 logo、背景图、图标等。

模板文件目录结构

Supesite 7.5 的模板文件存放在 templates/ 目录下,当你安装一个新模板时,通常会解压一个文件夹到 templates/ 目录里。

supesite 7.5 模板
(图片来源网络,侵删)

一个典型的模板目录结构如下:

templates/
└── my_template/          <-- 你的模板文件夹名
    ├── images/           <-- 存放模板所需的图片
    ├── style/            <-- 存放 CSS 文件
    │   └── style.css     <-- 主样式表
    ├── index.htm         <-- 首页模板
    ├── list.htm          <!-- 列表页模板 -->
    ├── view.htm          <!-- 内容页模板 -->
    ├── header.htm        <!-- 公共头部 -->
    ├── footer.htm        <!-- 公共底部 -->
    ├── ...               <!-- 其他页面模板,如搜索页、用户中心等 -->

核心模板标签语法

这是 Supesite 模板的核心,标签通常以 和 包裹。

变量输出

用于显示从 PHP 后端传递过来的数据。

  • 基本变量{$variable_name}
    • {$site_name} 会输出网站名称。
  • 数组变量{$array.key}
    • 循环文章列表时,{$article.title} 会输出当前文章的标题。
  • 函数调用{$variable|function_name}
    • 这是最常用的功能之一,用于对变量进行格式化处理。
    • {$article.postdate|date='Y-m-d H:i:s'}:将文章发布时间格式化为 年-月-日 时:分:秒
    • {$article.content|nl2br}:将文章内容中的换行符 <br> 转换成 HTML 换行标签。
    • {$article.title|strip_tags}:去除文章标题中的 HTML 标签。
    • {$article.content|substr=0,200}:截取文章内容前 200 个字符。

循环

用于遍历一个数组,并重复执行一段模板代码。

  • {loop} ... {/loop}:最常用的循环标签。
    • 语法:
      {loop $article_list $article}
          <h3><a href="{$article.url}">{$article.title}</a></h3>
          <p>{$article.content|substr=0,100}...</p>
          <span>发布时间:{$article.postdate|date='Y-m-d'}</span>
      {/loop}
    • $article_list 是从后端传来的文章数组。
    • $article 是循环中当前的元素变量,你可以通过它访问文章的各个属性。

条件判断

根据条件执行不同的模板代码。

  • {if} ... {else} ... {/if}
    • 语法:
      {if $user['uid']}
          欢迎您,{$user['username']}!
          <a href="{url('user/index')}">个人中心</a>
      {else}
          <a href="{url('user/login')}">登录</a>
          <a href="{url('user/register')}">注册</a>
      {/if}

包含文件

用于引入其他模板文件,实现模块化和代码复用。

  • {template}:引入模板文件。
    • 语法:{template 'header'}
    • 这行代码会引入同目录下的 header.htm 文件,Supesite 会自动加上 .htm 后缀。
    • 首页模板 index.htm 的结构会是:
      {template 'header'}
      <!-- 首页主要内容区域 -->
      {template 'footer'}

URL 生成

用于生成站点的内部链接,这是非常重要的一个标签,可以确保在更换域名或目录后,所有链接依然有效。

  • {url}:生成一个标准的 Supesite 链接。
    • 语法:{url('module/action/param')}
      • {url('index')}:生成首页链接。
      • {url('list', array('catid' => 1))}:生成 ID 为 1 的分类的文章列表页链接。
      • {url('view', array('itemid' => 100))}:生成 ID 为 100 的文章的详情页链接。

常用模板文件详解

理解了标签语法后,我们来看看几个关键模板文件的作用。

header.htm (头部)

通常包含:

  • <head> 部分:网站标题 <title>、关键词 <meta>、描述 <meta>、CSS 文件引入 <link>、JS 文件引入 <script>
  • <body> 开始后的部分:网站 Logo、主导航菜单。

示例 header.htm:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{$page_title}-{$site_name}</title>
    <meta name="keywords" content="{$page_keywords}">
    <meta name="description" content="{$page_description}">
    <link rel="stylesheet" type="text/css" href="{CSS_PATH}style.css">
</head>
<body>
    <div id="header">
        <div id="logo"><a href="{url('index')}"><img src="{IMG_PATH}logo.png" alt="{$site_name}"></a></div>
        <div id="nav">
            <ul>
                <li><a href="{url('index')}">首页</a></li>
                <!-- 循环输出导航菜单 -->
                {loop $nav_list $nav}
                <li><a href="{$nav.url}">{$nav.name}</a></li>
                {/loop}
            </ul>
        </div>
    </div>
    <div id="main">
  • {CSS_PATH}{IMG_PATH} 是 Supesite 内置的变量,分别指向 CSS 和图片目录的 URL 路径。

index.htm (首页)

这是网站的入口,通常由多个模块组成,如:

  • 轮播图
  • 焦点新闻
  • 最新文章列表
  • 热门文章排行
  • 友情链接

示例 index.htm (片段):

{template 'header'}
<!-- 轮播图部分 -->
<div id="slider">
    {loop $focus_list $focus}
    <a href="{$focus.url}"><img src="{$focus.pic}" alt="{$focus.title}"></a>
    {/loop}
</div>
<!-- 最新文章列表 -->
<div class="article-list">
    <h2>最新文章</h2>
    {loop $new_article_list $article}
    <div class="article-item">
        <h3><a href="{$article.url}">{$article.title}</a></h3>
        <p class="meta">作者:{$article.author} | 发布时间:{$article.postdate|date='Y-m-d'} | 阅读量:{$article.hits}</p>
        <p class="summary">{$article.content|substr=0,150}...</p>
    </div>
    {/loop}
</div>
{template 'footer'}

list.htm (列表页)

用于显示某个分类下的所有文章列表,通常包含:

  • 当前分类的面包屑导航
  • 分页条

示例 list.htm (片段):

{template 'header'}
<div class="breadcrumb">
    您的位置:<a href="{url('index')}">首页</a> > <span>{$category['name']}</span>
</div>
<div class="article-list">
    {loop $article_list $article}
    <!-- 循环内容同 index.htm -->
    {/loop}
</div>
<!-- 分页条 -->
<div class="pages">
    {$pages}
</div>
{template 'footer'}
  • {$pages} 是 Supesite 自动生成的分页 HTML 代码,非常方便。

view.htm (内容页)

用于显示单篇文章的详细内容,通常包含:

  • 、作者、发布时间、点击量等信息
  • 文章正文内容
  • 上下篇文章导航
  • 评论区域

如何制作或修改一个模板?

  1. 准备基础:你需要懂 HTML 和 CSS,PHP 知识不是必须的,但能让你更深入地理解模板逻辑。
  2. 选择一个基础模板:找一个你喜欢的现有模板作为起点,在其基础上修改,比自己从零开始要快得多。
  3. 修改结构 (HTML):使用你熟悉的 HTML 和 CSS 来调整网站的布局、颜色、字体等,主要修改 *.htm 文件和 style.css 文件。
  4. 替换数据 (Supesite 标签):将静态的 HTML 内容(如 <h1>新闻标题</h1>)替换为动态的 Supesite 标签(如 <h1>{$article.title}</h1>),使用 {loop}{if} 来处理列表和条件。
  5. 引入公共部分:使用 {template 'header'}{template 'footer'} 来复用代码,保持结构清晰。
  6. 预览调试:将修改后的模板文件夹上传到服务器的 templates/ 目录,然后在 Supesite 后台 -> 界面风格 -> 选择你的新模板,并清空缓存,然后刷新前台页面查看效果。

Supesite 7.5 的模板系统是一个简单、高效且功能完备的方案,它的核心是 “PHP 模板标签”,通过 {变量}{loop}{if}{template}{url} 等标签,将页面展示逻辑与业务逻辑分离,使得网站的前端美工和后端开发可以相对独立地进行。

对于新手来说,最好的学习方式就是“拆解”:下载一个漂亮的模板,把它放到服务器上,然后对照着前台页面,去后台看数据,再到模板文件里找对应的标签,一步步理解数据是如何被渲染出来的。