帝国 CMS 副字段怎么用

juming
juming 正式会员超兽战士
发布于 2026-10-07 06:07 ·1 浏览 ·0 回复

学完这篇,你能在帝国 CMS 里自己加一个「副表字段」,并且知道它在内容页、列表页分别该怎么调用、为什么有时候调不出来。

第一步:先弄明白副字段到底存在哪张表

帝国 CMS 一个内容模型对应两张表:主表 phome_ecms_news 和副表 phome_ecms_news_data_1。

  • 主表放“轻”字段:标题、栏目、发布时间、审核状态这些列表页排序、查询要用的东西。
  • 副表放“重”字段:正文 newstext、标题图、以及所有你选了“副表”的自定义字段。

查看位置:后台 → 系统 → 数据表与系统模型 → 管理数据表,找到「新闻系统数据表 (phome_ecms_news)」,点右侧「管理字段」,页面上会分主表字段、副表字段两块列出来。

分表的原因只有一个:列表页的 SQL 只查主表,字段越少越快;正文这种大文本放副表,只有打开内容页时才去查。

第二步:决定这个新字段放主表还是副表

判断标准很简单:

  • 列表页要显示(价格、地区、来源、标签)→ 放主表。
  • 只在内容页显示、体积又大(长篇附录、大段 HTML、地图代码)→ 放副表。

注意:副表字段不能在列表模板里用 [!--字段名--] 直接调出来,写了也是空白。这是新手最常踩的坑,原因是列表页 SQL 默认不关联副表。

第三步:动手加一个副字段

后台 → 系统 → 数据表与系统模型 → 管理数据表 → 找到「新闻系统数据表 (phome_ecms_news)」→ 点「管理字段」→ 在页面里点「增加字段」,按下表填:

  • 字段名:产品参数
  • 字段标识:canpin(英文,不能用数字开头)
  • 字段类型:TEXT(短内容用 VARCHAR,长度填 255)
  • 输入表单显示元素:多行文本框
  • 存放表:选「副表」← 关键项
  • 其他保持默认,点「提交」

提交后帝国 CMS 会自动执行 ALTER TABLE 改表结构,一般不用手动建表。

注意:字段标识保存后就别再改了。模板、SQL、数据库都靠它定位,改了旧数据会读不出来。

第四步:在内容页模板里调用

内容页模板(后台 → 模板 → 模板管理 → 内容模板,文件名通常是 publish.news.php 之类)里,直接写:

<div class="canshu">[!--canpin--]</div>

帝国 CMS 解析内容页时会自动关联副表,不需要你写任何 SQL。

第五步:在列表页/首页调副表字段

两种可行做法,选一个:

做法 A:把字段挪回主表。 数据量不大时最省事,直接在主表新建同名字段,把数据导过去。

做法 B:用灵动标签 + 子查询。 在列表模板或首页模板里写:

[e:loop={1,10,0,0}]
<?php
$fr=$empire->fetch1("select canpin from {$dbtbpre}ecms_news_data_1 where id='".$bqr[id]."'");
?>
<a href="<?=$bqsr[titleurl]?>"><?=$bqr[title]?></a> —— <?=$fr[canpin]?>
[/e:loop]

$dbtbpre 是表前缀变量,别写死 phome_。

注意:ecms_news_data_1 里的 1 是副表编号。如果你建过多个副表,可能是 data_2,去「管理数据表」里确认实际表名。

第六步:验证是否生效

  1. 后台 → 内容 → 新闻 → 增加新闻,填上「产品参数」的内容,保存。
  2. 后台 → 生成 → 更新内容页(或数据更新中心 → 刷新内容页),重新生成静态页。
  3. 前台打开这条新闻,看字段有没有输出。

显示为空时按顺序排查:字段存放表是不是选成了主表 → 模板里字段标识拼写对不对 → 静态页有没有重新生成。

注意:帝国 CMS 默认生成静态页,加了字段、改了模板却不「更新内容页」,前台看到的永远是旧页面。

小结

  • 副字段 = 存在 phome_ecms_xxx_data_1 副表里的自定义字段,主表只放查询排序要用的轻字段。
  • 加字段入口:系统 → 数据表与系统模型 → 管理数据表 → 管理字段 → 增加字段,「存放表」选副表。
  • 字段标识用英文,定下来就别改。
  • 内容页模板直接写 [!--字段标识--] 就能调用。
  • 列表页、首页要用副表字段,必须自己写 SQL 关联副表,不能直接写字段变量。
  • 改完记得重新生成静态页,否则验证时容易误判。
版权声明:本文来自 GJ论坛《帝国 CMS 副字段怎么用》
原文链接:https://www.gj0.com/thread-112.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~