我卖的是有存款价格的瓶装饮料。客户必须支付这笔金额,但可以通过将瓶子带到超市来取回。我想在产品页面中显示没有存款的产品价格,但是当用户检出他的购物车时,需要将这笔金额添加到购物车中以存入每个存款。这是一些额外的信息: 并非所有产品都有存款 存款价格取决于产品
我设法添加"存款"字段到产品页面的后台:
http://oi57.tinypic.com/6p9s80.jpg
但似乎改变购物车检查的整个工作流程会非常痛苦。有没有简单的方法来完成这项任务?
谢谢!
答案 0 :(得分:1)
最简单的方法来做你想要的是使用"产品属性组合" +小代码一步一步地改变:
在没有"存款"的产品页面价格上显示更改themes/themename/js/product.js
中的function updatePrice()
查找行
// Apply combination price impact
// 0 by default, +x if price is inscreased, -x if price is decreased
basePriceWithoutTax = basePriceWithoutTax + +combination.price;
并将其包装成条件:
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但是像你已经那样通过索引访问数组元素),在任何情况下解决方案都是特定于项目的,只需快速修复,常见的情况是更好地使用其他方式。