# 帝国cms内容页怎么调用自定义字段的值

*Published:* 2026-03-22
*Author:* 飞翔001

使用帝国CMS建站时，经常会用到自定义字段来扩展内容模型。在内容页中调用这些自定义字段的值，是常见的操作。下面介绍几种常用的方法来实现自定义字段的调用。

直接通过 $navinfor 变量调用

在内容页模板中，帝国CMS提供了 $navinfor 这个全局变量，用于获取当前文章的所有字段信息，包括自定义字段。

假设你创建了一个名为 myfield 的自定义字段

在内容页模板中使用如下代码即可调用：

```
<!=$navinfor['myfield']?>
```

如果在带程序代码的页面（如 PHP 模块或自定义页面）中使用，需确保已启用“使用程序代码”并正确赋值：

```
<?php

echo $navinfor['myfield'];

?>
```

通过灵动标签 \[e:loop\] 调用

如果你在首页、列表页或其他非内容页想调用某条内容的自定义字段，可以使用灵动标签结合SQL查询。

示例：调用ID为123的文章中 myfield 字段的值

```
[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'];

?>
```

这种方法适用于需要判断、格式化或组合多个字段的场景。