如果创建了许多“栏目模型字段”且栏目较多,且每个栏目划分的字段都不一样,那么在栏目列表页及内容详情页想要调用这些字段就比较麻烦。

分享如下自动判断当前栏目划分字段的调用方法
1、循环当前栏目划分的字段
{loop $cat['field'] $f}
...
{/loop}判断字段类型方便调用值
完整调用
show.html
{loop $cat['field'] $f}
{php $fe= $ci->module['category_data_field'][$f];}
{if $fe && $fe.fieldtype=="Text"}
文本字段:{$fe.name}:{$this->_options[$fe.fieldname]}
{elseif $fe && $fe.fieldtype=="Radio"}
单选字段:{$fe.name}:{php $field = dr_field_options($ci->module['category_data_field'][$fe.fieldname]['id']);}{$field[$this->_options[$fe.fieldname]]}
{elseif $fe && $fe.fieldtype=="Select"}
单选下拉选项:{$fe.name}:{php $field = dr_field_options($ci->module['category_data_field'][$fe.fieldname]['id']);}{$field[$this->_options[$fe.fieldname]]}
{if $fe && $fe.fieldtype=="Selects"}
多选下拉菜单
{/if}
{/loop}判断
{if $this->_options[$fe.fieldname]}判断是否有值{/if}循环列表中
{search ...}
{loop $cat['field'] $f}
{php $fe=$ci->module['category_data_field'][$f];}
{if $fe && $fe.fieldtype=="Selects"}
{if $t[$fe.fieldname]}
<li class="d-flex flex-wrap">
<p class="name w-50">{$fe.name}</p>
<p class="v w-50">
{php $field = dr_field_options($ci->module['category_data_field'][$fe.fieldname]['id']);}
{loop $field $v $name}
{if in_array($v, $t[$fe.fieldname])}
<span>{$name}<i>、</i></span>
{/if}
{/loop}
</p>
</li>
{/if}
{/if}
{/loop}
{/search}判断字段是否有值
{if $t[$fe.fieldname]}判断是否有值{/if}筛选搜索
list.html、search.html
<ul>
{category_search_field module=mall catid=$catid return=c1}
<li class="li-c1 {if $c1.child}child-li{/if} {if $catid && dr_in_array($catid, $c1.catids)} on{else} off{/if}">
<a class="c1 btn {if $catid && in_array($catid, $c1.catids)}active{/if}">{$c1.name} <span class=""><i class="bi bi-chevron-down"></i></span></a>
<ul class="ul-c1" style="display: none">
<!-- <li class="li-c2"><a class="c2 {if !$params[$c1.field]}active{/if}" href="{Router::search_url($params, $c1.field, NULL)}">{dr_lang('不限')}</a></li> -->
{loop $c1.data $v}
{if \Phpcmf\Service::M()->db->table('1_mall_category_data')->where('catid', $cat.id)->like($c1.field, $v['value'])->countAllResults()>0}
<li class="li-c2">
<a class="c2 {if $v.value==$params[$c1.field]}active{/if}" href="{Router::search_url($params, $c1.field, $v.value)}">{dr_lang($v.name)}
<div><span class="num">{php echo \Phpcmf\Service::M()->db->table('1_mall_category_data')->where('catid', $cat.id)->like($c1.field, $v['value'])->countAllResults();}</span></div>
</a>
</li>
{/if}
{/loop}
</ul>
</li>
{/category_search_field}
</ul>


