ECshop商品列表添加按销售排序及默认排序的修改方法 -云主机博士

ECshop商品列表添加按销售排序及默认排序的修改方法 -云主机博士 第1张

商品列表页面的按上架时间、价格、更新时间是默认的,现在需要添加的是按销量排行,但是在商品表里面没有销量的字段,这样的话,必须二次开发才可以解决。
网上搜索了老半天,没有解决问题,研究了半天,终于解决了,现在分享给大家。

【第一步】在表“ecs_goods”添加字段:salesnum(注:自定义字段名)

方法:

alter table `ecs_goods` ADD `salesnum` int(11) NOT NULL DEFAULT '0',;

 【第二步】打开根目录下文件:flow.php

找到以下代码:

    /* 插入订单商品 */
    sql = "INSERT INTO " .sql="INSERTINTO".ecs->table('order_goods') . "( " .
                "order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, ".
                "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) ".
            " SELECT 'new_order_id', goods_id, goods_name, goods_sn, product_id, goods_number, market_price, ".
                "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id".
            " FROM " .neworderid′,goodsid,goodsname,goodssn,productid,goodsnumber,marketprice,"."goodsprice,goodsattr,isreal,extensioncode,parentid,isgift,goodsattrid"."FROM".ecs->table('cart') .
            " WHERE session_id = '".SESS_ID."' AND rec_type = 'flow_type'";flowtype′";db->query($sql);

在这段代码的下面,添加如下代码:

/* 插入商品表的salesnum 字段,统计销量排行 代码开始*/sql = "update " .sql="update".GLOBALS['ecs']->table('goods') . " AS a, ".GLOBALS['ecs']->table('cart') . " AS b ".
		"set a.salesnum= a.salesnum + b.goods_number".
				" WHERE a.goods_id=b.goods_id AND b.session_id = '".SESS_ID."' AND b.rec_type = 'GLOBALS[′ecs′]−>table(′cart′)."ASb"."seta.salesnum=a.salesnum+b.goodsnumber"."WHEREa.goodsid=b.goodsidANDb.sessionid=′".SESSID."′ANDb.rectype=′flow_type'";db->query(db−>query(sql);
/* 插入商品表的salesnum 字段,统计销量排行 代码结束*/

【第三步】打开文件:default\library\goods_list.lbi,找到下面的代码:

<a href="{ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 12: script_name}̲.php?category={category}&display={ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 14: pager.display}̲&brand={brand_id}&price_min={ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 10: price_min}̲&price_max={price_max}&filter_attr={ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 12: filter_attr}̲&page={pager.page}&sort=last_update&order=<!-- {if ParseError: KaTeX parse error: Expected 'EOF', got '&' at position 29: … 'last_update' &̲&pager.order == 'DESC'} -->ASC<!-- {else} -->DESC<!-- {/if} -->#goods_list"><img src="images/last_update_<!-- {if ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 28: …= 'last_update'}̲ -->{pager.order}<!-- {else} -->default<!-- {/if} -->.gif" alt="{$lang.sort.last_update}"></a>

在上面那段代码的下面添加:

<a href="{ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 12: script_name}̲.php?category={category}&display={ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 14: pager.display}̲&brand={brand_id}&price_min={ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 10: price_min}̲&price_max={price_max}&filter_attr={ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 12: filter_attr}̲&page={pager.page}&sort=salesnum&order=<!-- {if $pager.sort == 'salesnum' && $pager.order == 'DESC'} -->ASC<!-- {else} -->DESC<!-- {/if} -->#goods_list"><img src="images/shop_salesnum_<!-- {if ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 25: …t == 'salesnum'}̲ -->{pager.order}<!-- {else} -->default<!-- {/if} -->.gif" alt="按商品销量排行"></a>

[红色区是图片的名称,对应做上该命名的图片即可][蓝色区是第一步所添加的字段名称]

PS:如果把销量的点击排行分开处理,可以按照下面的方法添加代码:

<!-- {if $pager.sort == 'salesnum' && $pager.order == 'DESC'} -->
<a href="/category.php?category=1&display=grid&brand=0&price_min=0&price_max=0&filter_attr=0&page=1&sort=salesnum&order=DESC#goods_list" title="销量从高到低排序"><img src="images/shop_sales_DESC.jpg" alt="销量从高到低排序"></a><!-- {else} -->
<a href="/category.php?category=1&display=grid&brand=0&price_min=0&price_max=0&filter_attr=0&page=1&sort=salesnum&order=DESC#goods_list" title="销量从高到低排序"><img src="images/shop_sales_DESC_default.jpg" alt="销量从高到低排序"></a><!-- {/if} -->
<!-- {if $pager.sort == 'salesnum' && $pager.order == 'ASC'} -->
<a href="/category.php?category=1&display=grid&brand=0&price_min=0&price_max=0&filter_attr=0&page=1&sort=salesnum&order=ASC#goods_list" title="销量从低到高排序"><img src="images/shop_sales_ASC.jpg" alt="销量从低到高排序"></a><!-- {else} -->
<a href="/category.php?category=1&display=grid&brand=0&price_min=0&price_max=0&filter_attr=0&page=1&sort=salesnum&order=ASC#goods_list" title="销量从低到高排序"><img src="images/shop_sales_DESC_default.jpg" alt="销量从低到高排序"></a><!-- {/if} -->

【第四步】打开文件:category.php,找到如下代码:

$sort = (isset($_REQUEST['sort']) && in_array(trim(strtolower($_REQUEST['sort'])), array('goods_id', 'shop_price', 'last_update'))) ? trim($_REQUEST['sort']) : $default_sort_order_type;

修改为:

$sort = (isset($_REQUEST['sort']) && in_array(trim(strtolower($_REQUEST['sort'])), array('goods_id', 'shop_price', 'last_update', 'salesnum'))) ? trim($_REQUEST['sort']) : $default_sort_order_type;

也就是在代码: 'last_update' 的后面添加:, 'salesnum'

如果要修改默认的排序显示,找到以下的代码:

/* 排序、显示方式以及类型 */default_display_type =defaultdisplaytype=_CFG['show_order_type'] == '0' ? 'list' : (_CFG['show_order_type'] == '1' ? 'grid' : 'text');CFG[′showordertype′]==′1′?′grid′:′text′);default_sort_order_method = _CFG['sort_order_method'] == '0' ? 'DESC' : 'ASC';CFG[′sortordermethod′]==′0′?′DESC′:′ASC′;default_sort_order_type = _CFG['sort_order_type'] == '0' ? 'goods_id' : (CFG[′sortordertype′]==′0′?′goodsid′:(_CFG['sort_order_type'] == '1' ? 'shop_price' : 'last_update');

修改其中的这一句代码:

$default_sort_order_type = $_CFG['sort_order_type'] == '0' ? 'goods_id' : ($_CFG['sort_order_type'] == '1' ? 'shop_price' : 'last_update');

修改为:

$default_sort_order_type = $_CFG['sort_order_type'] == '0' ? 'salesnum' : ($_CFG['sort_order_type'] == '1' ? 'shop_price' : 'last_update');

方法一:如果按照上面这个方法修改,还要到数据库操作,后台设置也要一致!

数据库操作方法:
找到表名:ec_shop_config
字段名:code
值为:sort_order_type
如下图所示,添加一个数字3在后面!
ECshop商品列表添加按销售排序及默认排序的修改方法 -云主机博士 第2张

然后修改语言包:
1.找到文件:languages\zh_cn\admin\shop_config.php 大概位置:293行到295行,代码如下:

$_LANG['cfg_range']['sort_order_type']['0'] = '按上架时间';
$_LANG['cfg_range']['sort_order_type']['1'] = '按商品价格';
$_LANG['cfg_range']['sort_order_type']['2'] = '按最后更新时间';

2.修改为:

$_LANG['cfg_range']['sort_order_type']['0'] = '按商品销量';
$_LANG['cfg_range']['sort_order_type']['1'] = '按商品价格';
$_LANG['cfg_range']['sort_order_type']['2'] = '按上架时间';
$_LANG['cfg_range']['sort_order_type']['3'] = '按最后更新时间';

然后在后台——商店设置——显示设置下面可以看到如下图所示:
ECshop商品列表添加按销售排序及默认排序的修改方法 -云主机博士 第3张

方法二:

/* 排序、显示方式以及类型 */
default_display_type =defaultdisplaytype=_CFG['show_order_type'] == '0' ? 'list' : (_CFG['show_order_type'] == '1' ? 'grid' : 'text');CFG[′showordertype′]==′1′?′grid′:′text′);default_sort_order_method = _CFG['sort_order_method'] == '1' ? 'DESC' : 'ASC';CFG[′sortordermethod′]==′1′?′DESC′:′ASC′;default_sort_order_type = 'salesnum';

OK,完工。到这里就修改完毕了!

宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取


iproyal.png
原文链接:,转发请注明来源!
「ECshop商品列表添加按销售排序及默认排序的修改方法 -云主机博士」评论列表

发表评论