帝国 CMS 字段调用方法

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

学完这篇,你能在自己的帝国 CMS 站点里准确调用系统字段和自定义字段,内容页、列表页、灵动标签、万能标签都能写对,不再出现"空白""报错""取不到值"的情况。

第一步:先确认字段名到底叫什么

这一步的目的是把"我要调的数据"变成一个准确的英文字段名,因为所有调用写法都依赖它。

进后台:系统 → 数据表与系统模型 → 管理数据表,找到对应模型的数据表(例如新闻系统是 phome_ecms_news),点右侧的管理字段。页面会列出所有字段:系统字段(title、titlepic、newstime、newstext、smalltext 等)和你在增加字段时新建的自定义字段(比如 chanpin_jiage)。

注意:自定义字段名不要和系统字段重名,也不要带连字符。字段建好后必须回到 系统 → 数据更新 → 更新数据库缓存 执行一次,否则前台取不到值。

第二步:内容页模板里直接调用字段

这一步完成后,你的内容页就能显示标题、正文、自定义字段。入口:模板 → 模板管理 → 管理内容模板,编辑对应模型的内容模板。

内容页数组是 $navinfor,写法:

标题:<?=$navinfor[title]?>
发布时间:<?=date('Y-m-d H:i:s',$navinfor[newstime])?>
正文:<?=$navinfor[newstext]?>
自定义字段:<?=$navinfor[chanpin_jiage]?>

注意:内容页只能用 $navinfor,不能用 $bqr。$navinfor[newstext] 是已处理过的正文,不用再套 nl2br。另外字段值若含 HTML 且被转义了,检查字段的"输入表单替换html代码"设置。

第三步:列表页用灵动标签调用字段

这一步完成后,栏目列表页、首页就能循环输出文章。语法结构固定:

[e:loop={栏目ID,显示条数,操作类型,只显示有标题的记录}]
<a href="<?=$bqsr[titleurl]?>" target="_blank"><?=DoTitleFont($bqr[titlefont],$bqr[title])?></a>
<span><?=$bqsr[newstime]?></span>
<p><?=esub($bqr[smalltext],80)?></p>
[/e:loop]

参数含义:栏目ID 填栏目编号,0 表示不限;操作类型 0 是最新排序,1 是热门,2 是推荐;显示条数写数字。

关键是 $bqr 和 $bqsr 的区别:

  • $bqr:数据库原始值,取自定义字段、时间戳用这个
  • $bqsr:系统处理过的值,titleurl(带域名和路径的链接)、格式化后的 newstime 用它

常用处理函数:esub() 截取字符、date() 格式化时间、DoTitleFont() 渲染标题颜色加粗。

注意:灵动标签里绝对不要写 $navinfor,它在这里是空的。改完模板要去 系统 → 数据更新 → 刷新页面 或清缓存,不然看到的还是旧页面。

第四步:用万能标签 [ecmsinfo] 调用

这一步用于首页、专题页这种不想手写循环的场合。语法:

[ecmsinfo]1,10,32,0,0,2,0[/ecmsinfo]

参数依次是:栏目ID、显示条数、操作类型、只显示有标题记录、标题截取数、是否显示栏目名、模板ID。模板ID 对应 模板 → 标签管理 → 管理万能标签模板 里的编号,模板内容里同样用 $bqr 和 $bqsr。

注意:万能标签的模板必须单独建,写在第 7 个参数里,不能在标签中间直接塞 HTML。

第五步:特殊字段怎么调

这一步解决图片、图集、附件这类"存不下一个值"的字段。

  • 标题图:<?=$bqr[titlepic]?>,判断有无用 <?php if($bqr[titlepic]){?>...<?php }?>
  • 多图字段 morepic:值是 图片地址::::::说明::::::图片地址::::::说明 的拼接串,要拆:
<?php $pic=explode('::::::',$navinfor[morepic]); 
for($i=0;$i<count($pic);$i+=2){ ?>
<img src="<?=$pic[$i]?>"><span><?=$pic[$i+1]?></span>
<?php } ?>
  • 附件字段:值在副表里,用 $navinfor[fileid] 取到 ID 后配合帝国自带的附件函数输出。

注意:morepic、downpath 这些字段的存储格式和其它字段不同,直接 <?=$navinfor[morepic]?> 会输出一堆 ::::::,必须拆分。

第六步:取不到值时的排查顺序

  1. 字段是否在正确模型的表里,名字是否拼错(区分大小写)
  2. 是否执行过"更新数据库缓存"和"刷新页面"
  3. 列表页是否错用了 $navinfor
  4. 模板是否保存成功、是否绑到了正确的栏目或内容模板
  5. 用 <?php print_r($navinfor);?> 临时打印数组,看字段到底有没有值,查完马上删掉

小结

  • 内容页用 $navinfor[字段名],列表页/灵动标签用 $bqr[字段名] 和 $bqsr[字段名]
  • $bqr 是原始值,$bqsr 是系统处理值,链接和格式化时间优先用 $bqsr
  • 自定义字段要先在"管理字段"里建好,再更新数据库缓存
  • 多图和附件字段是拼接存储,必须拆分后输出
  • 每次改完模板,刷新页面或更新缓存,否则改动不生效
版权声明:本文来自 GJ论坛《帝国 CMS 字段调用方法》
原文链接:https://www.gj0.com/thread-125.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~