基础概念:什么是标签?

在帝国CMS中, 就是一段特殊的代码,它被 <?php ... ?> 包围,用于从数据库中获取数据并动态地显示在页面上,你可以把它想象成一个“命令”,告诉CMS“请从这里获取一些信息,然后显示在这里”。

帝国cms怎样网模板里套标签
(图片来源网络,侵删)

基本语法格式:

<?php
    // 这里是标签的具体代码
?>

最常用标签:信息列表标签 (empirenews)

这是最核心、最常用的标签,用于显示文章(新闻、产品等)的列表,它通常用于首页、列表页、栏目页等。

最简单的列表标签

这个标签会从默认的信息表中(通常是 phome_ecms_news 表)按发布时间倒序,取出10条记录。

<?php
    $empire = getdb();
    $news=$empire->query("select * from {$dbtbpre}ecms_news order by newstime desc limit 10");
    while($r=$empire->fetch($news)){
        // 循环输出每条记录
    }
?>

模板中如何书写:

帝国cms怎样网模板里套标签
(图片来源网络,侵删)
<ul>
    <?php
    $empire = getdb();
    $news=$empire->query("select * from {$dbtbpre}ecms_news order by newstime desc limit 10");
    while($r=$empire->fetch($news)){
    ?>
        <li>
            <a href="[!--news.url--]" target="_blank">[!--title--]</a>
            <span>[!--newstime--]</span>
        </li>
    <?php
    }
    ?>
</ul>

说明:

  • <?php ... ?>:标签的开始和结束。
  • $empire = getdb();:连接数据库的固定写法,必须有。
  • $empire->query(...):执行SQL查询。
  • {$dbtbpre}:帝国CMS的数据表前缀,如果你的前缀是 phome_,它就会被替换成 phome_,这样即使你修改了前缀,代码也能正常工作。
  • ecms_news:新闻信息表名,如果你的信息模型是“新闻”,通常就是这个名字,如果是产品,可能是 ecms_product
  • order by newstime desc:按发布时间倒序排列。
  • limit 10:只取10条记录。
  • while($r=$empire->fetch($news)):循环遍历查询结果。
  • [!--title--][!--newstime--][!--news.url--]:这是字段变量$r 数组里包含了当前记录的所有字段信息,[!--字段名--] 就是它们的简写。
    • [!--title--]
    • [!--smalltext--]:文章简介
    • [!--newstime--]:发布时间
    • [!--classid--]:栏目ID
    • [!--id--]:信息ID
    • [!--news.url--]:文章链接(news 是信息表名,如果是产品就是 [!--product.url--]

标签的简化写法:listshow 函数

为了方便开发者,帝国CMS提供了一个非常强大的内置函数 listshow(),它封装了上述复杂的查询逻辑,让代码更简洁。

语法: listshow('栏目ID', '显示条数', '标题截取长度', '是否显示简介', '附加SQL条件', '模板ID')

示例:显示“网站首页”栏目下的5条最新文章

帝国cms怎样网模板里套标签
(图片来源网络,侵删)

假设“网站首页”栏目的ID是 1

<ul>
    <?php
    listshow(1, 5, 30, 1); // 参数依次是:栏目ID, 显示条数, 标题长度, 是否显示简介(1为显示)
    ?>
</ul>

模板中如何书写(配合 list.var 模板): listshow 函数需要一个配套的模板文件来定义每条信息的显示样式,这个模板文件在 “模板” -> “列表内容模板” 中管理,通常选择一个 list.var 模板。

list.var 模板内容示例:

<li>
    <a href="[!--titleurl--]" target="_blank">[!--title--]</a>
    <span>[!--newstime--]</span>
</li>
  • [!--titleurl--]:这是 [!--news.url--] 的别名,功能完全一样,都是获取文章链接。

使用步骤:

  1. 在后台进入“模板” -> “列表内容模板”。
  2. 选择一个 list.var 模板,将上面的代码复制进去并保存。
  3. 在你的页面模板中,使用 listshow() 函数调用它。

listshow() 的优点:

  • 代码简洁:一行代码搞定列表调用。
  • 自动关联栏目:可以根据栏目ID自动调用该栏目下的信息,并自动处理栏目链接。
  • 灵活配置:可以方便地控制条数、标题长度等。

其他常用标签

当前栏目信息标签 (GetClassUrl)

用于获取当前栏目的信息,如栏目名称、栏目链接等。

当前位置:<a href="[!--news.url--]">首页</a> > <a href="[!--classurl--]">[!--classname--]</a>
  • [!--classurl--]:当前栏目的链接。
  • [!--classname--]:当前栏目的名称。

首页幻灯片/推荐位标签 (empirecms)

这个标签用于调用后台设置的“首页推荐位”或“首页幻灯片”内容。

<?php
    $slide=$empire->query("select * from {$dbtbpre}enewspl where classid=1 order by myorder limit 5");
    while($r=$slide->fetch()){
        // 循环输出
    }
?>
  • enewspl:推荐位数据表。
  • classid=1:推荐位的ID,你可以在后台“推荐位管理”中查看。
  • myorder:推荐位的排序字段。

模板中如何书写:

<div class="slider">
    <?php
    $slide=$empire->query("select * from {$dbtbpre}enewspl where classid=1 order by myorder limit 5");
    while($r=$slide->fetch()){
    ?>
        <a href="[!--titleurl--]" target="_blank">
            <img src="[!--titlepic--]" alt="[!--title--]">
        </a>
    <?php
    }
    ?>
</div>
  • [!--titlepic--]:推荐位设置的图片。

高级技巧与注意事项

自定义SQL查询

listshow 无法满足复杂需求时(需要跨表查询、按特定字段排序等),就需要手写SQL。

示例:调用“产品”栏目(ID=5)下“价格”大于1000的产品。

<?php
    $empire = getdb();
    // phome_ecms_product 是产品信息表,price 是一个自定义字段
    $sql = "select * from {$dbtbpre}ecms_product where classid=5 and price > 1000 order by price desc limit 10";
    $products = $empire->query($sql);
    while($r = $empire->fetch($products)){
    ?>
        <div class="product-item">
            <h3><a href="[!--titleurl--]">[!--title--]</a></h3>
            <p>价格:¥[!--price--]</p> <!-- price 是你添加的自定义字段 -->
        </div>
    <?php
    }
    ?>

缓存的使用

对于首页、列表页等访问量大但更新不频繁的页面,开启缓存可以极大提升网站速度。

  • 后台设置:在 “系统” -> “数据更新” -> “更新首页” 等选项中,可以勾选“使用首页缓存”。
  • 模板中控制:在 <?php ... ?> 标签内,可以使用 GetHtml() 函数来获取缓存内容。

调试技巧

如果标签不显示内容或报错,可以:

  1. 检查表名:确认 ecms_newsecms_product 是否是你模型对应的正确表名。
  2. 检查字段名:确认 [!--title--] 等字段变量是否在表中真实存在。
  3. 检查权限:确认数据库用户是否有查询该表的权限。
  4. 简化代码:先写一个最简单的 listshow()select * 语句,确保能出数据,再逐步增加条件。
  5. 查看错误日志:如果页面空白,可能是PHP代码有致命错误,查看服务器的PHP错误日志。
需求场景 推荐标签/方法 说明
调用栏目下的文章列表 listshow(栏目ID, 条数...) 最常用、最推荐,代码简洁,功能强大。
自定义复杂查询 <?php $empire->query("..."); ?> 灵活度高,适合需要特殊SQL逻辑的场景。
获取当前栏目信息 [!--classname--], [!--classurl--] 用于面包屑导航等。
调用幻灯片/推荐位 <?php $empire->query("select * from enewspl..."); ?> 用于首页广告、焦点图等。
获取单篇文章详情 页模板直接使用 [!--title--] 内容页模板(show.php)有特殊的变量环境。

listshow() 开始学习,是掌握帝国CMS模板标签最快的方式,当你熟悉了基本用法后,再尝试手写SQL,就能应对各种复杂的需求了。