我們在用ecshop商城網站建設時,遇到一個問題是產品頁商品屬性排序,默認是亂的,網上搜索相關文檔后,發現有人還開發了這個插件,要收費,
ecshop默認的屬性是亂的,排序是亂的,查找文件代碼發現,影響這個排序的是有三個字段:g.goods_attr_id, a.sort_order, g.attr_price,仔細研究一下這3個字段的關系。
前臺:添加新產品時,讓屬性按照添加的順序(屬性id)排列
修改/inclues/lib_goods.php
/* 獲得商品的規格 */
$sql = "SELECT a.attr_id, a.attr_name, a.attr_group, a.is_linked, a.attr_type, ".
"g.goods_attr_id, g.attr_value, g.attr_price " .
'FROM ' . $GLOBALS['ecs']->table('goods_attr') . ' AS g ' .
'LEFT JOIN ' . $GLOBALS['ecs']->table('attribute') . ' AS a ON a.attr_id = g.attr_id ' .
"WHERE g.goods_id = '$goods_id' " .
'ORDER BY g.goods_attr_id, a.sort_order, g.attr_price';
$res = $GLOBALS['db']->getAll($sql);
這段代碼是在網上搜集的,但是應用之后沒有反應,還是沒有變,分析之后發現是價格影響到排序,那么我們就把這個g.attr_price去掉,刷新之后發現可以實現了,排序好了。
修改之后發現后臺排序還是沒有變過來,我們來看一下,后臺怎么去修改,其實跟前臺的方法是一致的,
二、后臺顯示,讓屬性按照添加的順序(屬性id)排列
修改admin/inclues/lib_goods.php
// 查詢屬性值及商品的屬性值
$sql = "SELECT a.attr_id, a.attr_name, a.attr_input_type, a.attr_type, a.attr_values, v.attr_value, v.attr_price ".
"FROM " .$GLOBALS['ecs']->table('attribute'). " AS a ".
"LEFT JOIN " .$GLOBALS['ecs']->table('goods_attr'). " AS v ".
"ON v.attr_id = a.attr_id AND v.goods_id = '$goods_id' ".
"WHERE a.cat_id = " . intval($cat_id) ." OR a.cat_id = 0 ".
"ORDER BY v.goods_attr_id, a.sort_order, a.attr_type, a.attr_id, v.attr_price";
這也是網上搜索的代碼,應用后也是不管用,跟前臺方法一致,將
v.attr_price 去掉,這樣就可以了,
還有產品復制也可能存在相應的問題,沒去實踐過,方法應該和上面類似。
商城網站建設-選擇瑞恒網絡