這個是小問題,似乎不能通過設定實現。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 先檢視一下 購物車的資料表 找到對應的商品
就是這個商品屬性的字串在商品加入購物車的時候就被組合加上這個價格字尾了,所以在資料插入前進行修改最好。
2 找到對應的處理函式
flow.php?step=add_to_cart
找到flow.php 的add_to_cart
addto_cart函式 程式碼位於 includes/lib_order.php 大概1013行
找到裡面的 goods_attr 變數 對應一個 get_goods_attr_info函式 對傳入的屬性陣列 $spec 進行了處理。這個函式就是最終修改目標
找到 get_goods_attr_info函式, includes/lib_order.php大概1300行
$fmt 就是輸出格式,去掉[%s] 就是去掉價格。並對1309行進行註釋,這個是處理價格的,對1310行去掉末尾的 $attr_price
1314行 還有一個 // $attr = str_replace('[0]', '', $attr); 原始碼對價格 是0 的情況進行了替換,註釋掉{ps 看來ec的程式碼效率還是比較低的}
這樣處理 就是在屬性插入cart資料表之前 就把資料按要求處理掉,輸出效率稍微高點。
OK welldone!得到最先的截圖效果,還是截圖寫文章費時間。
注意事項
經驗