帝国 CMS 字段调用方法
学完这篇,你能在自己的帝国 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]?>会输出一堆::::::,必须拆分。
第六步:取不到值时的排查顺序
- 字段是否在正确模型的表里,名字是否拼错(区分大小写)
- 是否执行过"更新数据库缓存"和"刷新页面"
- 列表页是否错用了
$navinfor - 模板是否保存成功、是否绑到了正确的栏目或内容模板
- 用
<?php print_r($navinfor);?>临时打印数组,看字段到底有没有值,查完马上删掉
小结
- 内容页用
$navinfor[字段名],列表页/灵动标签用$bqr[字段名]和$bqsr[字段名] $bqr是原始值,$bqsr是系统处理值,链接和格式化时间优先用$bqsr- 自定义字段要先在"管理字段"里建好,再更新数据库缓存
- 多图和附件字段是拼接存储,必须拆分后输出
- 每次改完模板,刷新页面或更新缓存,否则改动不生效
原文链接:https://www.gj0.com/thread-125.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。