2014年1月9日 星期四

ecshop商品屬性排序 (,轉載自WE-SHOP)



關於改ecshop商品屬性排序的問題,很多人認為是一個BUG,其實官方預設是以屬性ID由小到大排序的,如果你在新增商品時,按照你的排序方式來新增屬性當然不會有問題,但如果有新增就不會按照你的期望顯示了,因為他是按照屬性ID排序的,但大部份商品屬性都含有數字,排序起來會像圖一一樣,但正確的排序應該像圖二

由於每個人的需求不同,程式判斷結果不一定符合你的需求,網路上有許多修改方式,甚至是收費插件,姑且不論其效果如何,但只不過一個排序功能而已,有必要如此大動干戈?那整個購物車要改到滿意。豈不是面目全非,我要強調的是,每個程式都有其安全結構,當你在修改某些功能時,可能已經不知不覺破壞了程式的安全結構,因而產生安全漏洞,一個程式存在安全風險,縱使功能再好又如何?

言歸正傳,商品屬性的排序,多數情況是以數字大小排序(如:1、1.1、2、2.1.....),若是使用英文(如:)S、M、L、XL、XXL、XXXL....)就必須使用EC的預設排序方式,否則結果會不如預期,另外,如果屬性中有中文字,應該相同,以避免影響排序(如:5吋、1尺、2尺...應該寫成0.5尺、1尺、2尺...或是5吋、10吋、20吋...),這樣排序出來的結果會比較正確...

修改方法
編輯 includes/lib_goods.php        約 669 行將
代碼: [選擇]
'ORDER BY a.sort_order, g.attr_price, g.goods_attr_id';改為
代碼: [選擇]
'ORDER BY a.sort_order, g.attr_price, CAST(g.attr_value AS UNSIGNED)';存檔!

沒有留言:

張貼留言