迅睿CMS 模板取自定义字段:从建字段到前台输出的完整链路

· 迅睿CMS · 阅读 15
摘要

迅睿的自定义字段链路比 Z-Blog 稍长一点:后台建字段 → 绑定到内容模型或栏目 → 模板里取值输出。中间任何一步没做,模板里取到的就是空,而且不报错。 第一步:后台建字段 在内容模型的字段管理里新增,字段类型决定模板里怎么取: 单行

迅睿的自定义字段链路比 Z-Blog 稍长一点:后台建字段 → 绑定到内容模型或栏目 → 模板里取值输出。中间任何一步没做,模板里取到的就是空,而且不报错。

第一步:后台建字段

在内容模型的字段管理里新增,字段类型决定模板里怎么取:

  • 单行文本 / 多行文本:直接输出字符串
  • 图片 / 文件:输出的是附件路径,需要自己套 img 标签
  • 下拉 / 单选:输出的是选项值
  • 关联字段:输出的可能是 ID,需要二次查询

字段名建议用英文小写下划线,中文名只作为显示用。字段名一旦定了并且有数据了,再改名会丢数据。

第二步:模板里取值

详情页通常直接用字段名取值:

<?php if (dr_field_value('price')) { ?>
  <div class="price"><?php echo dr_field_value('price'); ?></div>
<?php } ?>

注意必须加存在性判断。字段为空时,直接把空值塞进 HTML 会产生空标签,页面上看不出来,但结构上有冗余。

第三步:列表页想显示自定义字段

这是最容易卡住的一步。列表页默认只带基础字段,要显示自定义字段需要:

  • 确认该字段在栏目模板的查询里被带出
  • 或者用字段输出标签,逐条取值

如果列表里取到的一直是空,先去详情页确认字段有值,再回来查列表的取值方式,通常问题就在这一层。

踩过的一个坑

图片字段存的是附件 ID 或相对路径(取决于版本和配置),直接 <img src="字段"> 有时能出图,有时出破图。稳妥做法是先看输出的原始值是什么形态,再决定要不要拼根路径。