搜索函数写法 dr_search_url

2024-01-26 14:03 小编

搜索函数:

{Router::search_url($params, '字段名', '字段值', '模块目录(search页面可以省略)')}

支持多个参数传递:

{Router::search_url($params, ['字段名1', '字段名2'], ['字段值1', '字段值2'], '模块目录(search页面可以省略)')}

如果在首页或者非search页面使用这个函数必须加上第四个参数:模块目录

{Router::search_url($params, '字段名', '字段值', '模块目录')}

image.png

搜索关系介绍

搜索匹配方式是or关系

以上图为例,搜索匹配是【场景 or 行业 or 格式】,当他们任意一个字段满足条件是就会有结果。


字段词的匹配方式

当搜索字段词是:【迅睿】,将会在数据库中模糊匹配这个词语带有【迅睿】的就会有结果。

如果要改成这个字段必须精确等于【迅睿】时,需要在下图开启完整匹配:

搜索函数写法 dr_search_url


示例代码

在cms的demo/search.html 模块自带很多搜索示例的写法,例如:

<!--按【联动菜单】搜索-->

<div class="form-group row">

    <label class="col-md-2 control-label">联动菜单字段中文</label>

    <div class="col-md-9">

        <label><a class="label {if !$params.联动菜单字段英文名 || dr_linkage('联动菜单字段的联动菜单code值', $params.联动菜单字段英文名, 0, 'child')}label-success{else}label-default{/if}" href="{Router::search_url($params, '联动菜单字段英文名', NULL)}">不限</a></label>

        <!--调用联动菜单字段的联动菜单code值,pid为动态获取的地区id-->

        {list action=linkage code=联动菜单字段的联动菜单code值 pid=$params.联动菜单字段英文名}

        <label><a class="label {if $t.id==$params.联动菜单字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '联动菜单字段英文名', $t.id)}">{$t.name}</a></label>

        {/list}

    </div>

</div>


<!--【单选按钮】字段搜索-->

<div class="form-group row">

    <label class="col-md-2 control-label">单选字段</label>

    <div class="col-md-9">

        <label><a class="label {if !$params.单选字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '单选字段英文名', NULL)}">不限</a></label>

        <!--调用单选字段数据方法-->

        {php $field = dr_field_options($ci->module['field']['单选字段英文名']['id']);}

        {loop $field $value $name}

        <label><a class="label {if $value==$params.单选字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '单选字段英文名', $value)}">{$name}</a></label>

        {/loop}

    </div>

</div>


<!--【单选按钮】字段搜索-多条件-->

<div class="form-group row">

    <label class="col-md-2 control-label">单选字段-多条件</label>

    <div class="col-md-9">

        <label><a class="label {if !$params.单选字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '单选字段英文名', NULL)}">不限</a></label>

        <!--调用单选字段数据方法-->

        {php $field = dr_field_options($ci->module['field']['单选字段英文名']['id']);}

        {loop $field $value $name}

        <label><a class="label {if dr_is_double_search($params.单选字段英文名, $value)}label-success{else}label-default{/if}" href="{Router::search_url($params, '单选字段英文名', dr_get_double_search($params.单选字段英文名, $value))}">{$name}</a></label>

        {/loop}

    </div>

</div>

<div class="form-group row">

    <label class="col-md-2 control-label">复选字段-多条件</label>

    <div class="col-md-9">

        <label><a class="label {if !$params.复选字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '复选字段英文名', NULL)}">不限</a></label>

        <!--调用单选字段数据方法-->

        {php $field = dr_field_options($ci->module['field']['复选字段英文名']['id']);}

        {loop $field $value $name}

        <label><a class="label {if dr_is_double_search($params.复选字段英文名, $value)}label-success{else}label-default{/if}" href="{Router::search_url($params, '复选字段英文名', dr_get_double_search($params.复选字段英文名, $value))}">{$name}</a></label>

        {/loop}

    </div>

</div>



<!--【复选字段】搜索-->

<div class="form-group row">

    <label class="col-md-2 control-label">复选字段</label>

    <div class="col-md-9">

        <label><a class="label {if !$params.复选字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '复选字段英文名', NULL)}">不限</a></label>

        <!--调用字段数据方法-->

        {php $field = dr_field_options($ci->module['field']['复选字段英文名']['id']);}

        {loop $field $value $name}

        <label><a class="label {if $value==$params.复选字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '复选字段英文名', $value)}">{$name}</a></label>

        {/loop}

    </div>

</div>

<!--【下拉框字段】搜索-->

<div class="form-group row">

    <label class="col-md-2 control-label">下拉选择字段</label>

    <div class="col-md-9">

        <label><a class="label {if !$params.下拉字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '下拉字段英文名', NULL)}">不限</a></label>

        <!--调用单选字段数据方法-->

        {php $field = dr_field_options($ci->module['field']['下拉字段英文名']['id']);}

        {loop $field $value $name}

        <label><a class="label {if $value==$params.下拉字段英文名}label-success{else}label-default{/if}" href="{Router::search_url($params, '下拉字段英文名', $value)}">{$name}</a></label>

        {/loop}

    </div>

</div>


<div class="form-group row">

    <label class="col-md-2 control-label">单一购买价格</label>

    <div class="col-md-9">

        <!--自定义一个价格返回数组,这个都懂得,php最基础的数组用法-->

        {php $price=array('0,500'=>'500以内','500,1000'=>'500到1000','1000,2000'=>'1000到2000','2000,3000'=>'2000到3000','3000,0'=>'3000以上');}

        <label><a class="label {if !$params.dydgm}label-success{else}label-default{/if}" href="{Router::search_url($params, 'dydgm', NULL)}">不限</a></label>

        {loop $price $i $t}

        <label><a class="label {if $i==$params.dydgm}label-success{else}label-default{/if}" href="{Router::search_url($params, 'dydgm', $i)}">{$t}</a></label>

        {/loop}

    </div>

</div>


<div class="form-group row">

    <label class="col-md-2 control-label">组合购买价格自定义</label>

    <div class="col-md-9">

        {php $zhxgm = explode(',', $params.zhxgm);}

       <label><input type="text" class="form-control" value="{$zhxgm[0]}" id="zhxgm_min"></label>

       <label>到</label>

       <label><input type="text" class="form-control" value="{$zhxgm[1]}" id="zhxgm_max"></label>

       <label>这是自定义价格范围搜索的写法</label>

    </div>

</div>


<!--按关键字搜索-->

<div class="form-group row">

    <label class="col-md-2 control-label" style="padding-top:5px">内容搜索</label>

    <div class="col-md-6">

        <div class="input-group">

            <input type="text" class="form-control" onkeypress="if(event.keyCode==13) {dr_module_search();return false;}" name='keyword' value='{$keyword}' id='search_keyword'>

            <span class="input-group-btn">

                <button class="btn blue" onclick="dr_module_search()" type="button"> <i class="fa fa-search"></i> 搜索</button>

            </span>

        </div>

    </div>

</div>

<script>

    // 这段js是用来执行搜索的

    function dr_module_search(name) {

        var url="{Router::search_url($params, ['keyword', 'zhxgm'], ['mykeyword', 'myzhxgm'])}";

        var keyword = $("#search_keyword").val();

        var zhxgm_min = $("#zhxgm_min").val();

        var zhxgm_max = $("#zhxgm_max").val();

        zhxgm_max = zhxgm_max ? zhxgm_max : 0;

        zhxgm_min = zhxgm_min ? zhxgm_min : 0;

        if (zhxgm_max || zhxgm_min) {

            url = url.replace('myzhxgm', zhxgm_min+','+zhxgm_max);

        } else {

            url = url.replace('myzhxgm', '');

        }

        if (keyword) {

            url = url.replace('mykeyword', keyword);

        } else {

            url = url.replace('mykeyword', '');

        }

        location.href=url;

        return false;

    }

</script>

注意:$params是搜索参数数组,只能在搜索页面使用;以上字段的中文地方需要按需修改你后台自己创建的字段名称即可

注意:复选框字段,在创建选项值的时候,务必填写储存值,且储存值不可为汉字,建议为数字或者字母代替。

image

=======================

示例操作

1、新建条件字段,例如类型:


搜索函数写法 dr_search_url

并录入数据到此条件上

2、打开模板标签生成工具

搜索函数写法 dr_search_url

3、然后找到搜索模板search.html将上面的条件代码复制进去。

搜索函数写法 dr_search_url

4、搜索页面进行效果展示

搜索函数写法 dr_search_url

如上图,点击类目1一级可以筛选出后台存储的内容了,界面优化靠大家了


=========================已选条件的写法============================

搜索函数写法 dr_search_url

<!--已经选择-->

                                <div class="form-group row">

                                    <label class="col-md-2 control-label" style="padding-top:5px">已经选择</label>

                                    <div class="col-md-9" style="padding-top: 7px;">

                                        <!--手动获取参数写法-->

                                        {if $params['order']}

                                        <label><a href="{Router::search_url($params, 'order', NULL)}" class="btn btn-xs red">排序:{$params['order']} <i class="fa fa-times"></i> </a></label>

                                        {/if}

                                        <!--自动获取小部分的搜索数组写法-->

                                        {loop $param_value $p $v}

                                        <label><a href="{Router::search_url($params, $p, NULL)}" class="btn btn-xs red">{$v.name}:{$v.value} <i class="fa fa-times"></i> </a></label>

                                        {/loop}

                                    </div>

                                </div>


Tag: 搜索
在线咨询 拨打电话

电话

13363039260

微信二维码

微信二维码