- *在模板文件中 (`.htm`) 使用** - 这是最常见的需求。
- 在PHP代码文件中 (如自定义函数、模型文件) 使用 - 适用于更复杂的逻辑。
在模板文件中 (*.htm) 使用
这是最直接的方法,使用 DedeCMS 的内置标签和函数。

(图片来源网络,侵删)
使用 if 标签(最推荐)
这是最标准、最灵活的方法,可以结合多个条件进行判断。
语法结构:
{dede:field name='你的字段名' function='(@me ? "不为空的内容" : "为空的内容")'/}
或者更清晰的写法:
{dede:if field.你的字段名 != ''}
<!-- 字段不为空时显示的内容 -->
<p>这个字段的内容是:[field:你的字段名/]</p>
{else /}
<!-- 字段为空时显示的内容 -->
<p>这个字段是空的。</p>
{/dede:if}
参数说明:

(图片来源网络,侵删)
field.你的字段名:这是判断字段是否为空的核心。field.是固定前缀,后面跟你在后台添加的字段名。- 表示“不等于空字符串”,你也可以用 来判断“等于空字符串”。
if ... else ... /if:标准的条件判断标签。
示例:
假设你在文章模型中添加了一个自定义字段 author_intro(作者简介)。
<!-- 方法1:使用 if 标签 -->
{dede:if field.author_intro != ''}
<div class="author-intro">
<h4>作者简介</h4>
[field:author_intro/]
</div>
{/dede:if}
<!-- 方法2:使用 function 函数(更简洁,但只能处理二选一) -->
{dede:field name='author_intro' function='(@me ? "<div class=\"author-intro\"><h4>作者简介</h4>".@me."</div>" : "")'/}
if 标签的优势:
- 可读性强:代码结构清晰,易于理解和维护。
- 功能强大:可以组合多个条件,
{dede:if field.author_intro != '' && field.picurl != ''}。
使用 empty 函数
empty 是 PHP 的一个内置函数,DedeCMS 的模板引擎也支持它,它的作用是检查一个变量是否为空(包括 , 0, '0', null, false, array() 等)。

(图片来源网络,侵删)
语法结构:
{dede:field name='你的字段名' function='empty(@me) ? "为空的内容" : "不为空的内容"'/}
示例:
{dede:field name='author_intro' function='empty(@me) ? "作者暂未提供简介。" : "<div class=\"author-intro\">简介:".@me."</div>"'/}
empty 函数的特点:
- 判断范围广:不仅判断 ,还会判断
0、null等多种“空”的状态。 - 简洁:对于简单的二选一判断,一行代码搞定。
使用 strlen 函数
strlen 是获取字符串长度的函数,如果长度大于0,说明字符串不为空。
语法结构:
{dede:field name='你的字段名' function='strlen(@me) > 0 ? "不为空的内容" : "为空的内容"'/}
示例:
{dede:field name='author_intro' function='strlen(@me) > 0 ? "<div>简介:".@me."</div>" : ""'/}
strlen 函数的特点:
- 精确判断:只判断长度是否为0,比
empty更严格。strlen('0')会返回1,而empty('0')会返回true。
在PHP代码文件中使用
如果你在开发自定义函数、修改模型文件或其他PHP逻辑中需要判断,可以直接使用PHP原生的判断方法。
假设你获取到了一个字段值,存储在变量 $fieldValue 中。
使用 empty() 函数(最常用)
if (!empty($fieldValue)) {
// 字段不为空
echo "字段内容: " . $fieldValue;
} else {
// 字段为空
echo "字段是空的。";
}
使用 isset() 和 组合
isset() 主要用于检查变量是否已定义,而 用于检查值是否为空字符串,这个组合非常严谨。
// 假设 $arcRow 是你从数据库获取的一行数据,$arcRow['your_field_name']
if (isset($arcRow['your_field_name']) && $arcRow['your_field_name'] !== '') {
// 字段存在且不为空
echo "字段内容: " . $arcRow['your_field_name'];
} else {
// 字段不存在或为空
echo "字段不存在或为空。";
}
使用 strlen() 函数
if (strlen($fieldValue) > 0) {
// 字段不为空
echo "字段内容: " . $fieldValue;
} else {
// 字段为空
echo "字段是空的。";
}
总结与建议
| 场景 | 推荐方法 | 优点 |
|---|---|---|
| 模板中简单判断 | {dede:if field.xxx != ''} |
可读性最好,功能最灵活,强烈推荐。 |
| 模板中一行搞定 | {dede:field name='xxx' function='empty(@me) ? ... : ...'} |
代码简洁,适合快速判断。 |
| PHP逻辑代码中 | if (!empty($value)) |
PHP标准做法,简单直接,兼容性好。 |
| PHP严格判断 | if (isset($value) && $value !== '') |
最严谨,能区分“未定义”和“已定义但为空”的情况。 |
核心要点:
- 在模板中,优先使用
{dede:if}- 在PHP中,优先使用
empty()函数。field.前缀是模板中调用自定义字段的关键。 - 在PHP中,优先使用
