迅睿 CMS 模板二次开发:自定义字段的前台调用与判断

· 迅睿CMS · 阅读 9
摘要

后台建好了字段,前台调不出来,是迅睿新手最常卡住的一步。问题多半在字段名和调用方式上。字段名不是显示名后台建字段时,“字段名称”是中文显示名,“字段别名”才是模板里用的名字。比如显示“副标题”,别名 subtitle,模板里写的是 {$su

后台建好了字段,前台调不出来,是迅睿新手最常卡住的一步。问题多半在字段名和调用方式上。

字段名不是显示名

后台建字段时,“字段名称”是中文显示名,“字段别名”才是模板里用的名字。比如显示“副标题”,别名 subtitle,模板里写的是 {$subtitle} 或 {dr_field('subtitle', $id)}。

两种调用路径

路径一:模板变量直接输出,适合详情页:

{if $subtitle}
  <p class="sub">{$subtitle}</p>
{/if}

路径二:函数调用,适合在循环里或别的地方取:

{dr_field('subtitle', $id)}

判断空值要小心

字段存在但内容为空时,变量是有值的空字符串,不是未定义。{if $subtitle} 能正常判空;但如果用 isset() 判断就会误判为存在。

图片字段的特殊处理

图片类字段返回的是附件 ID 或路径数组,不能直接输出。需要拆开取:

{if $cover}
  <img src="{dr_get_file($cover)}" alt="{$title}">
{/if}

多值字段

复选框、多选这类字段存的是序列化数组,直接输出会得到一串乱码。要 foreach 展开。

排查顺序

  1. 确认字段别名拼写(大小写敏感)
  2. 确认字段是否属于当前模块
  3. 清一次缓存,迅睿对模板有缓存
  4. 在后台内容编辑页确认该篇内容确实填了值