答案:帝国CMS调用自定义字段常用方法包括使用$navinfor变量、灵动标签[e:loop]和PHP数据库查询。1. 在内容页通过直接调用;2. 在非内容页使用[e:loop]结合SQL语句调用指定ID文章的自定义字段;3. 在启用程序代码的内容模板中,通过PHP查询数据库灵活获取字段值。需注意字段名拼写、副表名称正确及数据是否存在。

在使用帝国CMS建站时,经常会用到自定义字段来扩展内容模型。在内容页中调用这些自定义字段的值,是常见的操作。下面介绍几种常用的方法来实现自定义字段的调用。
直接通过 $navinfor 变量调用
在内容页模板中,帝国CMS提供了 $navinfor 这个全局变量,用于获取当前文章的所有字段信息,包括自定义字段。
- 假设你创建了一个名为 myfield 的自定义字段
- 在内容页模板中使用如下代码即可调用:
=$navinfor['myfield']?>
如果在带程序代码的页面(如 PHP 模块或自定义页面)中使用,需确保已启用“使用程序代码”并正确赋值:
php
echo $navinfor['myfield'];
?>
通过灵动标签 [e:loop] 调用
如果你在首页、列表页或其他非内容页想调用某条内容的自定义字段,可以使用灵动标签结合SQL查询。
示例:调用ID为123的文章中 myfield 字段的值
本系统使用的是XDcms内核,在原来基础上做来相应修改 前台修改调用数据,可以使用{loop catid=栏目ID}{/loop}方式调用 主要功能: A、内容管理模型,自定义字段,更方便扩展功能。自带模型:单页模型、新闻模型、产品模型、招聘模型 B、栏目自定义,便于内容管理 C、内容模块化,二次开发更便捷。自带模块:幻灯片、QQ客服、友情链接、自定义表单(在线留言、简历管理) D、模板管理,后台
[e:loop={"select myfield from [!db.pre!]ecms_news_data_1 where id=123",1,24,0}]
=$bqr['myfield']?>
[/e:loop]
注意:数据表名称根据实际模型和数据表结构调整,副表一般是 ecms_数据表名_data_分表号。
在内容页PHP代码中调用更灵活的方式
在内容模板中启用“使用程序代码”后,可通过数据库查询方式获取自定义字段值,适合复杂逻辑处理。
$id = (int)$navinfor['id'];
$classid = (int)$navinfor['classid'];
$r = $empire->fetch1("select myfield from {$dbtbpre}ecms_news_data_{$class_r[$classid]['deftb']} where id=$id");
echo $r['myfield'];
?>
这种方法适用于需要判断、格式化或组合多个字段的场景。
注意事项
确保自定义字段已正确添加并保存数据,且在对应的数据表中存在该字段。如果调用为空,请检查:
- 字段名是否拼写错误
- 是否选择了正确的副表(如 news 数据存在副表中)
- 模板是否启用了程序代码支持(尤其是使用PHP时)
- 信息是否确实填写了该字段值
基本上就这些方法,最常用的是 $navinfor['字段名'],简单直接,适合大多数情况。不复杂但容易忽略细节。









