做你想要它是用「產品屬性的組合」 +小代碼更改,一步一個腳印什麼最簡單的方法:
- 創建產品屬性如「存款」
- 增加它的價值,任何,例如。 「是」
- 在產品中創建與「存款:是」的組合,根據需要設置價格影響值,例如, 「$ 10」,並將其設置爲默認組合
對產品頁面價格顯示沒有function updatePrice()
查找線路
// Apply combination price impact // 0 by default, +x if price is inscreased, -x if price is decreased basePriceWithoutTax = basePriceWithoutTax + +combination.price;
,幷包裝成條件themes/themename/js/product.js
「定金」的變化:
if(your_attribute_id != combination.attributes[0]) {
basePriceWithoutTax = basePriceWithoutTax + +combination.price;
}
但在購物車中您會看到全價。
UPD:
我看不出有什麼好辦法做到這一點的模板,沒有核心的變化,因此,如果您需要它(解決方案還不夠理想) 文件controllers/front/CategoryController.php
( use override)方法assignProductList()
改變代碼塊到下一個視圖:
foreach ($this->cat_products as &$product) {
if ($product['id_product_attribute'] && isset($product['product_attribute_minimal_quantity']))
$product['minimal_quantity'] = $product['product_attribute_minimal_quantity'];
$combination = new Combination($product['id_product_attribute']);
$attributes = $combination->getAttributesName($this->context->language->id);
foreach ($attributes as $attribute) {
if(your_attribute_id == $attribute['id_attribute'])
$product['price_tax_exc'] -= $combination->price;
}
}
您將需要重複它,你使用所有列出的控制器(你可以不使用的foreach但像你已經做過的那樣通過索引來訪問數組元素),在任何情況下,解決方案都非常針對項目,只是快速修復,通常情況下更好地使用其他方式。
嗨,謝謝你的回答!這個想法很好,我正在用組合技巧。問題是這僅適用於產品頁面,而不適用於產品列表頁面(以及所有其他產品列表,例如精選,最佳銷售等)。任何想法? – skirato
此外,我不得不調整你的代碼到'if(combination.attributes [0] == 1){ \t \t basePriceWithoutTax = basePriceWithoutTax ++ combination.price; \t}'因爲它是我必須比較的id屬性,所以每個產品的id_product_attribute是不同的。 – skirato
'組合。屬性[0]!= 1'當然! (抱歉的垃圾郵件,無法編輯我的評論) – skirato