对于 prestashop 1.6 我们为特定产品设置了购物车规则,通过添加 3 个产品,另外 1 个产品将作为礼物添加,
这在购物车页面上运行良好,
但是如何在该特定产品页面上显示它
$context::$this->$cart->$getCartRules();
未显示在产品页面上
我们必须在遵守购物车规则的特定产品上显示购物车规则,
ex. "buy this product and you will get xyz product for free"
对于 prestashop 1.6 我们为特定产品设置了购物车规则,通过添加 3 个产品,另外 1 个产品将作为礼物添加,
这在购物车页面上运行良好,
但是如何在该特定产品页面上显示它
$context::$this->$cart->$getCartRules();
未显示在产品页面上
我们必须在遵守购物车规则的特定产品上显示购物车规则,
ex. "buy this product and you will get xyz product for free"
我认为你必须建立自己的查询,选择购物车规则和你仍然有效的礼物产品 ID。
在 CartRule 中(或您需要的地方)添加一个静态方法并直接调用 product.tpl 并显示它
例如:{CartRule::getGifts($product.id)}
然后,处理结果
为相同的构建自定义查询:
$result = Db::getInstance()->executeS('
SELECT *,rg.quantity as minimum_quantity FROM `'._DB_PREFIX_.'cart_rule_product_rule_value` cv
LEFT JOIN `'._DB_PREFIX_.'cart_rule_product_rule` pr ON cv.id_product_rule = pr.id_product_rule
LEFT JOIN `'._DB_PREFIX_.'cart_rule_product_rule_group` rg ON pr.id_product_rule_group = rg.id_product_rule_group
LEFT JOIN `'._DB_PREFIX_.'cart_rule` cr ON cr.id_cart_rule = rg.id_cart_rule
WHERE cv.id_item = '.$this->id_product.' AND cr.gift_product > 0 AND cr.date_to >= "'.date("Y-m-d H:i:s").'"'
);
我在Product.php中的解决方案
public function getRule($category = "0"){
$rules = Db::getInstance()->executeS('SELECT *,rg.quantity as minimum_quantity FROM `'._DB_PREFIX_.'cart_rule_product_rule_value` cv
LEFT JOIN `'._DB_PREFIX_.'cart_rule_product_rule` pr ON cv.id_product_rule = pr.id_product_rule
LEFT JOIN `'._DB_PREFIX_.'cart_rule_product_rule_group` rg ON pr.id_product_rule_group = rg.id_product_rule_group
LEFT JOIN `'._DB_PREFIX_.'cart_rule` cr ON cr.id_cart_rule = rg.id_cart_rule
WHERE code = "" and ((cv.id_item = '.$this->id.' and type = "products") or (cv.id_item = '.$category.' and type = "categories")) AND cr.date_to >= "'.date("Y-m-d H:i:s").'"'
);
return $rules;
}