说明:默认Ecshop添加添加新的商品相册图后,该图片就会置于商品相册的最后一个,于是前台显示放大图就会于相册第一张不同。原因是代码里面没有排序。
解决方法1:
找到include/lib_goods.php文件中“获得指定商品的相册”的get_goods_gallery函数,查找代码如下:
" WHERE goods_id = '$goods_id' LIMIT "
大概在代码730行,如图所示
更改为:
" WHERE goods_id = '$goods_id' ORDER BY img_id ASC LIMIT "
解决方法2:
增加可自定义排序功能。
步骤:
一, 执行sql:
ALTER TABLE `ecs_goods_gallery`ADD`img_order`SMALLINT(4)UNSIGNED NOT NULL DEFAULT '50'AFTER`img_original`;
二, 后台修改
打开文件 admin/templates/goods_info.htm 搜索
<input type="text" value="{$img.img_desc|escape}" size="15" name="old_img_desc[{$img.img_id}]" />
后面添加代码
<br />
<br />
{$lang.sort_order}
<input type="text" value="{$img.img_order}" size="5" name="img_order[{$img.img_id}]" />
打开文件 admin/goods.php
搜索 /* 编辑时处理相册图片描述 */ 这一段if语句 后面添加:
/* 增加自定义可修改商品相册排序 */
if (!$is_insert && isset($_POST['img_order']))
{
foreach ($_POST['img_order'] AS $img_id => $img_order)
{
$sql = "UPDATE " . $ecs->table('goods_gallery') . " SET img_order = '$img_order' WHERE img_id = '$img_id' LIMIT 1";
$db->query($sql);
}
}
搜索 $img_list = $db->getAll($sql); 上面一段sql 修改为:
$sql = "SELECT * FROM ".$ecs->table('goods_gallery')." WHERE goods_id = '$goods[goods_id]' ORDER BY img_order ASC";
三、至此后台修改完毕,下面去修改前台调用
打开文件 includes/lib_goods.php 搜索函数 function get_goods_gallery 里面的 " WHERE goods_id = '$goods_id' LIMIT "
修改为:
" WHERE goods_id = '$goods_id' ORDER BY img_order ASC LIMIT "
默认排序是顺序排序,从小到大,也可以修改为从大到小。
相关文章
ecshop出现Warning: Invalid argument supplied for foreach()错误2019-02-26
Ecshop 分类页产品列表不同分类调用不同产品属性2018-03-08
ECSHOP商品属性调用到任意页面方法2018-03-01
ECSHOP商品列表页显示每个商品的品牌2018-02-28
Ecshop 分类页品牌调用商品数量2018-02-28
ecshop各个页面调用商品销售量方法2016-09-23
ecshop mobile首页循环显示分类及分类下商品2016-09-23
ecshop后台添加虚拟销量以及前台显示销量2016-09-22
ecshop重新导入数据库,管理员和密码正确登录失败2016-09-21
ecshop 共享首页推荐商品调用商品品牌方法2015-08-06