跳转到内容

如何对自定义字段做特殊显示处理

后台可以自由添加字段,但是前台默认显示的格式是固定的,但你可以对它做进一步的个性处理,如下图所示。 img

如下图所示,你可以对模板进行字段的个性化处理 img

图中涉及到的代码如下

{qb:showpage field="title,content,picurl,telphone,maps,rooms_buju"}
<li><span>{title}:</span>{value}</li>
{/qb:showpage}
<li><span>室内布局:</span>{$info.rooms_buju}</li>
<li><span>室内布局:</span>
{volist name=":str_array(get_field(2)['rooms_buju']['options'])" id="name" key="k"}
<i style="color:{$k==$info._rooms_buju?'red':''}">{$name}</i>、
{/volist}
</li>
<li><span>配套设施:</span>
{volist name=":str_array(get_field(2)['peitao']['options'])" id="name" key="k"}
<i style="color:{:in_array($k,str_array($info[_peitao]))?'red':''}">{$name}</i>、
{/volist}
</li>

其中field="title,content,picurl,telphone,maps,rooms_buju" 这个参数是为了禁止哪些字段自动显示出来,避免重复显示。

<li><span>室内布局:</span>{$info.rooms_buju}</li> 这个是直接显示,不做特殊处理。仅只是做了位置的调整处理而已

下面这段代码,是对单选项的特殊化显示处理。为了实现把所有选项都列出来,而对选中项实现加红突出显示的目的。注意当中的自定义字段名是 rooms_buju 对应换成你自己的。

{volist name=":str_array(get_field(2)['rooms_buju']['options'])" id="name" key="k"}
<i style="color:{$k==$info._rooms_buju?'red':''}">{$name}</i>、
{/volist}

下面这段代码,是对多选项的特殊化显示处理。为了实现把所有选项都列出来,而对选中项实现加红突出显示的目的。注意当中的自定义字段名是 peitao 对应换成你自己的。

{volist name=":str_array(get_field(2)['peitao']['options'])" id="name" key="k"}
<i style="color:{:in_array($k,str_array($info._peitao))?'red':''}">{$name}</i>、
{/volist}

最后,特别要提醒一下,在判断当中用到变量名前面加了一个前缀下画线,比如 {$k==$info._rooms_buju?'red':''}当中的 $info._rooms_buju 注意并不是 $info.rooms_buju 。又比如 {:in_array($k,str_array($info._peitao))?'red':''} 当中的 $info._peitao注意并不是 $info.peitao 。他们都分别在字段名前面加了一个下画线。这代表是取原始数值,而不是转义后显示出来的数值。


上面仅仅是对单选 与 多选项的特殊处理。他们获取的原始循环数组都用到了 str_array 函数。其它字段,比如二级,三维数组的话,有点不一样。就用另外的 json_decode ,比如

{volist name=":json_decode(get_field(2)['xxxxxaaaaaaa']['options'],true)" id="rs"}
{/volist}

复制

最后重点再提醒一下,其中的 get_field(2) 代表获取模型二的内容