Ecshop后台订单列表增加”商品名”检索字段

近期ecshop网站做活动,统计商品订单量的时候没有按商品名搜索的选项,只能手动查询。这样效率很低下,而且容易出错。

现在为列表增加一个简单的“按商品名搜索”表单项。效果如下图

Ecshop后台订单列表增加”商品名”检索字段

涉及到2个文件,分别是/admin/order.php,/admin/templates/order_list.htm,下面详说。

第一步,增加表单项

在/admin/templates/order_list.htm第11行下面增加

1商品名<input name="goods_name" type="text" id="goods_name" size="15">

这样,代码上下文基本为

1{$lang.order_sn}<input name="order_sn" type="text" id="order_sn" size="15">
2 {$lang.consignee|escape}<input name="consignee" type="text" id="consignee"size="15">
3商品名<input name="goods_name" type="text" id="goods_name" size="15">
4 {$lang.all_status}
5 <select name="status" id="status">

第二步,js获取值

在/admin/order_list.htm第105行下面增加

1listTable.filter['goods_name'] = Utils.trim(document.forms['searchForm'].elements['goods_name'].value);

这样,代码上下文基本为

1/**
2 * 搜索订单
3 */
4 function searchOrder()
5 {
6 listTable.filter['order_sn'] = Utils.trim(document.forms['searchForm'].elements['order_sn'].value);
7 listTable.filter['consignee'] = Utils.trim(document.forms['searchForm'].elements['consignee'].value);
8 listTable.filter['goods_name'] = Utils.trim(document.forms['searchForm'].elements['goods_name'].value);
9 listTable.filter['composite_status'] = document.forms['searchForm'].elements['status'].value;
10 listTable.filter['page'] = 1;
11 listTable.loadList();
12 }

第三步,接收参数并处理

3.1)php文件接收参数并准备拼接sql

在/admin/order.php第4874行找到“$where = ‘WHERE 1 ‘;”,在下面增加

1$join_goods =" ";
2 if ($filter['goods_name'])
3 {
4 $join_goods " LEFT JOIN " .$GLOBALS['ecs']->table('order_goods'). " AS og ON o.order_id=og.order_id LEFT JOIN " .$GLOBALS['ecs']->table('goods'). " AS g ON g.goods_id = og.goods_id ";
5 $where .= " AND g.goods_name LIKE '%" . mysql_like_quote($filter['goods_name']) . "%'";
6 }

3.2)拼接sql

分别更改/admin/order.php第5025,5029,5041行sql语句为下面三句代码

1,

1$sql "SELECT COUNT(*) FROM " $GLOBALS['ecs']->table('order_info') . " AS o ,".
2 $GLOBALS['ecs']->table('users') . " AS u "$join_goods$where;

2.

1$sql "SELECT COUNT(*) FROM " $GLOBALS['ecs']->table('order_info') . " AS o ".$join_goods$where;

3.

1/* 查询 */
2 $sql "SELECT o.order_id, o.order_sn, o.add_time, o.order_status, o.shipping_status, o.order_amount, o.money_paid," .
3 "o.pay_status, o.consignee, o.address, o.email, o.tel, o.extension_code, o.extension_id, " .
4 "(" . order_amount_field('o.') . ") AS total_fee, " .
5 "IFNULL(u.user_name, '" .$GLOBALS['_LANG']['anonymous']. "') AS buyer ".
6 " FROM " $GLOBALS['ecs']->table('order_info') . " AS o " .
7 " LEFT JOIN " .$GLOBALS['ecs']->table('users'). " AS u ON u.user_id=o.user_id ".$join_goods$where .
8 " ORDER BY $filter[sort_by] $filter[sort_order] ".
9 " LIMIT " . ($filter['page'] - 1) * $filter['page_size'] . ",$filter[page_size]";

完成,这样就可以了

有几点可以改进:表单名可以存到系统语言包;可以按照此方法在“订单查询”那个大表单里扩展更多动能,紧急情况就先这样…

 

为了搜索订单更精准,决定完成之前说的改进:在“订单查询”那个大表单里扩展”商品名”检索功能,相当简单:

在/admin/templates/order_query.htm第七行下面增加

1<tr>
2 <td><div align="right"><strong>商品名</strong></div></td>
3 <td colspan="3"><input name="goods_name" type="text" id="goods_name" size="40"></td>
4 </tr>

即可

这个过程中js自动获取了表单的所有项目,而且之前我们已经完成了/admin/order.php中order_list()函数的改造

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装说明: 1. 复制search 目录到网站根目录,请不要修改此文件夹的称 2. 初次安装, 访问: 域/search/baseline.php 例如:你的域是www.ahuoo.com, 那么请访问 www.ahuoo.com/search/baseline.php 3. 修改代码 1.先备份网站根目录的search.php,然后用插件里面的替换掉 2.在模版中找到商品搜索页中的商品称显示语句,有些模版在library/search_goods_list.lbi文件中,如果没有search_goods_list.lbi文件那就在search.dwt文件中。 语句如: <a href="{$goods.url}" title="{$goods.goods_name|escape:html}" class="name">{$goods.goods_name}</a> 将其中的{$goods.goods_name}改为{$goods.new_goods_name} 3. 在admin\goods.php文件中找到如下代码: sys_msg($is_insert ? $_LANG['add_goods_ok'] : $_LANG['edit_goods_ok'], 0, $link); 在此代码上一行前添加如下代码: require_once ('../search/delta.php'); //ahuoo 4. 在admin\category.php文件中找到如下代码: sys_msg($_LANG['catedit_succed'], 0, $link); 在此代码上一行前添加如下代码: require_once ('../search/delta.php'); //ahuoo 4. 如果需要添加自定义关键词可访问: 域/search/add_word.php 一般情况下是不需要的。 插件原理: Ecshop默认情况下搜索是根据数据库按搜索的字符串去匹配,不能自动根据需要去自动分词。 例如:你搜索“李宁安踏” 标题里面必须要有“李宁安踏”才能出来, 如果某个商品标题只有“李宁”是不会出来的,这样对于普通的用户是不友好的。 本插件提供的功能: 1.提供一种强大的分词搜索,用户可以不用空格某几个分词,随便打一个句子就可以搜索出对应的结果 2.可以自定义分词。 3.搜索结果自动按照相关度排序,相关度越相关,越排在最前面。 插件为试用版,如果正式使用可以联系作者购买,当前只索引了商品的标题和分类信息,如果需要索引商品详情可以定制化开发,shopex也会有对应的版本。 插件作者 :阿虎 QQ:1976468723 演示地址: 前台:http://ahuoo.com/ec/search.php?encode=YTo0OntzOjg6ImNhdGVnb3J5IjtzOjE6IjAiO3M6ODoia2V5d29yZHMiO3M6MTI6IuiBlOmAmuS4ieaYnyI7czoxMDoiaW1hZ2VGaWVsZCI7czowOiIiO3M6MTg6InNlYXJjaF9lbmNvZGVfdGltZSI7aToxNDQ5MDYxNTAzO30= 后台: http://ahuoo.com/ec/admin 用户/密码:test/test123
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值