如何讓Ecshop購物車中不顯示屬性價格?

這個是小問題,似乎不能通過設定實現。ecshop購物車,在模板裡屬性值 {$goods.goods_attr nl2br} 直接輸出了 字串, 會帶一個增量的價格非常難看。需要去除[??]部分。

工具/原料

程式碼編輯器

方法/步驟

首先百度了一下

百度有提到 一個字串替換的方法摘錄一下

解決方案如下:

1、首先開啟include/lib_goods.php檔案找到下面程式碼大概在 875行左右

$arr_[$key][‘formated’]=price_format($valule[‘subtotal’],false);

在這行程式碼下新增一行程式碼

$arr_[$key][‘goods_attr’]=preg_replace(‘/(\[0-9+\])/’,”,$arr[$key][‘goods_attr’]);

2、$row[‘market_price’]=price_format($row[‘market_price’],false);

在這行程式碼下新增一行程式碼

$row[‘goods_attr’]=preg_replace(‘/(\[0-9+\])/’,”,$row[‘goods_attr’]);

但是這個方法 應該是每次顯示這個頁面都會執行一下字串替換效率不行。

只好自己檢視程式碼

1 先檢視一下 購物車的資料表 找到對應的商品

就是這個商品屬性的字串在商品加入購物車的時候就被組合加上這個價格字尾了,所以在資料插入前進行修改最好。

如何讓Ecshop購物車中不顯示屬性價格

2 找到對應的處理函式

flow.php?step=add_to_cart

找到flow.php 的add_to_cart

addto_cart函式 程式碼位於 includes/lib_order.php 大概1013行

如何讓Ecshop購物車中不顯示屬性價格

如何讓Ecshop購物車中不顯示屬性價格

找到裡面的 goods_attr 變數 對應一個 get_goods_attr_info函式 對傳入的屬性陣列 $spec 進行了處理。這個函式就是最終修改目標

如何讓Ecshop購物車中不顯示屬性價格

找到 get_goods_attr_info函式, includes/lib_order.php大概1300行

如何讓Ecshop購物車中不顯示屬性價格

$fmt 就是輸出格式,去掉[%s] 就是去掉價格。並對1309行進行註釋,這個是處理價格的,對1310行去掉末尾的 $attr_price

1314行 還有一個 // $attr = str_replace('[0]', '', $attr); 原始碼對價格 是0 的情況進行了替換,註釋掉{ps 看來ec的程式碼效率還是比較低的}

這樣處理 就是在屬性插入cart資料表之前 就把資料按要求處理掉,輸出效率稍微高點。

OK welldone!得到最先的截圖效果,還是截圖寫文章費時間。

如何讓Ecshop購物車中不顯示屬性價格

注意事項

經驗

相關問題答案