一. 搜索参数多条件的写法

类似以上图片这种条件搜索,一个字段可以使用多个条件选中查询,此查询需要以下字段支持:
联动菜单:Linkage
联动菜单多选:Linkages
复选框:Checkbox
单选按钮:Radio
下拉选择:Select
搜索条件写法:
<div class="form-group row">
<label class="col-md-2 control-label">单选字段-多条件</label>
<div class="col-md-10">
<label><a class="label {if !$params.danxuananniu}label-success{else}label-default{/if}" href="{Router::search_url($params, 'danxuananniu', NULL)}">不限</a></label>
<!--调用单选字段数据方法-->
{php $field = dr_field_options($ci->module['field']['danxuananniu']['id']);}
{loop $field $value $name}
<label><a class="label {if dr_is_double_search($params.danxuananniu, $value)}label-success{else}label-default{/if}" href="{Router::search_url($params, 'danxuananniu', dr_get_double_search($params.danxuananniu, $value))}">{$name}</a></label>
{/loop}
</div>
</div>判断是否选择:
{if dr_is_double_search($params.字段名称, "当前值")} 选中了 {/if}传入值写法:
{Router::search_url($params, '字段名称', dr_get_double_search($params.字段名称, "当前值"))}搜索值写法原理:
关键字A|关键字B
多个条件已|符号分开
二. 时间范围的搜索写法
适用于search.html模板写法
1、查询2012-1-1到2019-1-1的内容地址
{Router::search_url($params, 'updatetime', "2012-1-1,2019-1-1")}
2、查询2012年至今的内容地址
{Router::search_url($params, 'updatetime', "2012-1-1")}
三. 内容模块搜索框写法
在cms的demo模块自带很多搜索示例的写法,例如复选框
<!--复选字段搜索-->
<div class="form-group row">
<label class="col-md-2 control-label">复选字段</label>
<div class="col-md-10">
<label><a class="label {if !$params.fuxuankuang}label-success{else}label-default{/if}" href="{Router::search_url($params, 'fuxuankuang', NULL)}">不限</a></label>
<!--调用字段数据方法-->
{php $field = dr_field_options($ci->module['field']['fuxuankuang']['id']);}
{loop $field $value $name}
<label><a class="label {if $value==$params.fuxuankuang}label-success{else}label-default{/if}" href="{Router::search_url($params, 'fuxuankuang', $value)}">{$name}</a></label>
{/loop}
</div>
</div>$params是搜索参数数组,只能在搜索页面使用
搜索函数:
{Router::search_url($params, '字段名', '字段值', '模块目录(search页面可以省略)')}
如果在首页或者非search页面使用这个函数必须加上第四个参数:模块目录
{Router::search_url($params, '字段名', '字段值', '模块目录')}
四. 栏目模型字段[联动菜单字段]搜索
在栏目模型字段里面创建一个联动菜单字段,如何进行搜索展示呢?
栏目#1的模型字段
当在栏目1中发文时,会显示以上的字段,那么如何搜索筛选呢?
需要改造几个地方
1、打开news模块的search.html搜索模板,加上搜索参数
{if $catid==1}
栏目1的字段
<div class="form-group row">
<label class="col-md-2 control-label">联动菜单</label>
<div class="col-md-10">
<label><a class="label {if !$params.chegnshi || dr_linkage('address', $params.chegnshi, 0, 'child')}label-success{else}label-default{/if}" href="{Router::search_url($params, 'chegnshi', NULL)}">不限</a></label>
<!--调用联动菜单address,如果是其他联动菜单,请改name参数,pid为动态获取的地区id-->
{list action=linkage code=address pid=$params.chegnshi}
<label><a class="label {if $t.id==$params.chegnshi}label-success{else}label-default{/if}" href="{Router::search_url($params, 'chegnshi', $t.id)}">{$t.name}</a></label>
{/list}
</div>
</div>
{/if}2、如果啊,如果,只是如果要在搜索列表里面显示上面这些字段,需要加上参数 more=1
五. 联动搜索条件显示上下级菜单一并显示
一、显示二级联动
cscz是字段名称
address是联动菜单名称
<!--按联动菜单搜索-->
<!--按联动菜单搜索-->
<div class="form-group row">
<label class="col-md-2 control-label">一级联动</label>
<div class="col-md-10">
<?php
$tp = dr_linkage('address', $params.csxz);
if ($tp.pid) {
$tp = dr_linkage('address', $tp.pid);
}
$tpid = $tp.id;
$pids = explode(',', $tp.childids);
?>
<label><a class="label {if !$params.csxz}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', NULL)}">不限</a></label>
<!--调用联动菜单address,pid为动态获取的地区id-->
{linkage code=address pid=0}
<label><a class="label {if in_array($t.ii, $pids)}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $t.id)}">{$t.name}</a></label>
{/linkage}
</div>
</div>
{if $tp.child}
<div class="form-group row">
<label class="col-md-2 control-label">二级联动</label>
<div class="col-md-10">
<label><a class="label {if $tpid == dr_linkage('address', $params.csxz, 0, 'id')}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $tpid)}">不限</a></label>
<!--调用联动菜单address,pid为动态获取的地区id-->
{linkage code=address pid=$tpid}
<label><a class="label {if $t.id==$params.csxz}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $t.id)}">{$t.name}</a></label>
{/linkage}
</div>
</div>
{/if}
二、显示三级联动

<!--按联动菜单搜索-->
<div class="form-group row">
<label class="col-md-2 control-label">一级联动</label>
<div class="col-md-10">
<?php
$tp = dr_linkage('address', $params.csxz);
list($a, $b, $c) = explode(',', $tp['pids']);
if ($b) {
$temp = dr_linkage('address', $b);
$b_id = $b;
$b = $temp['id'];
}
if ($c) {
$temp = dr_linkage('address', $c);
$c_id = $c;
$c = $temp['id'];
}
$apids = explode(',', $tp.pids);
if (!$b && $tp.pid==0) {
$b = $tp.id;
$apids[] = $tp.ii;
}
if (!$c && $tp.pid==$b_id) {
$c = $tp.id;
$temp = dr_linkage('address', $c);
if (!$temp.child) {
unset($c);
}
}
?>
<label><a class="label {if !$params.csxz}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', NULL)}">不限</a></label>
<!--调用联动菜单address,pid为动态获取的地区id-->
{linkage code=address pid=0}
<label><a class="label {if in_array($t.ii, $apids)}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $t.id)}">{$t.name}</a></label>
{/linkage}
</div>
</div>
{if $b}
<div class="form-group row">
<label class="col-md-2 control-label">二级联动</label>
<div class="col-md-10">
<label><a class="label {if $b == dr_linkage('address', $params.csxz, 0, 'id')}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $b)}">不限</a></label>
<!--调用联动菜单address,pid为动态获取的地区id-->
{linkage code=address pid=$b}
<label><a class="label {if $t.id==$params.csxz || in_array($t.ii, $apids)}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $t.id)}">{$t.name}</a></label>
{/linkage}
</div>
</div>
{/if}
{if $c}
<div class="form-group row">
<label class="col-md-2 control-label">三级联动</label>
<div class="col-md-10">
<label><a class="label {if $c == dr_linkage('address', $params.csxz, 0, 'id')}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $c)}">不限</a></label>
<!--调用联动菜单address,pid为动态获取的地区id-->
{linkage code=address pid=$c}
<label><a class="label {if $t.id==$params.csxz}label-success{else}label-default{/if}" target="_blank" href="{Router::search_url($params, 'csxz', $t.id)}">{$t.name}</a></label>
{/linkage}
</div>
</div>
{/if}
六. 搜索关键词高亮显示
让搜索结果的搜索关键词高亮显示,比如当前搜索变量是 “新闻”,那么搜索列表就高亮本词语
默认写法{$t.title}改成
{dr_keyword_highlight($t.title, $keyword)}
自定义样式规则:
{dr_keyword_highlight($t.title, $keyword, '<span class="red">[value]</span>')}
七. 栏目模型字段参与搜索
1、Select、Radio、Checkbox字段自动获取并显示条件方法
当栏目模型字段参与搜索时必须开启参与搜索按钮
那么search.html的条件写法是:
<!--category_search_field是调用当前栏目下的模型字段是否具有搜索字段功能,这种用法只能用于模块列表与搜索页面-->
{category_search_field module=MOD_DIR catid=$catid}
<div class="form-group row">
<label class="col-md-2 control-label">{$t.name}</label>
<div class="col-md-9">
<label><a class="label {if !$params[$t.field]}label-success{else}label-default{/if}" href="{Router::search_url($params, $t.field, NULL)}">不限</a></label>
{loop $t.data $v}
<label><a class="label {if $v.value==$params[$t.field]}label-success{else}label-default{/if}" href="{Router::search_url($params, $t.field, $v.value)}">{$v.name}</a></label>
{/loop}
</div>
</div>
{/category_search_field}2、手动显示条件方法
栏目模型字段显示,必须与栏目id成对出现,要想使用模型字段搜索,那么必须有catid参数
比如调用栏目id=1下面的附加字段 属性 作为搜索条件
{if $catid && $catid == 1}
<!--单选按钮字段搜索-->
<div class="form-group row">
<label class="col-md-2 control-label">单选字段</label>
<div class="col-md-9">
<label><a class="label {if !$params.danxuananniu}label-success{else}label-default{/if}" href="{Router::search_url($params, 'danxuananniu', NULL)}">不限</a></label>
<!--调用单选字段数据方法-->
{php $field = dr_field_options($cat['field']['danxuananniu']['id']);}
{loop $field $value $name}
<label><a class="label {if $value==$params.danxuananniu}label-success{else}label-default{/if}" href="{Router::search_url($params, 'danxuananniu', $value)}">{$name}</a></label>
{/loop}
</div>
</div>
{/if}再比如调用栏目id=1或者=2怎么写:
{if $catid && in_array($catid, [1, 2])}