0

对于 prestashop 1.6 我们为特定产品设置了购物车规则,通过添加 3 个产品,另外 1 个产品将作为礼物添加,

这在购物车页面上运行良好,

但是如何在该特定产品页面上显示它

$context::$this->$cart->$getCartRules();

未显示在产品页面上

我们必须在遵守购物车规则的特定产品上显示购物车规则,

ex. "buy this product and you will get xyz product for free"
4

3 回答 3

1

我认为你必须建立自己的查询,选择购物车规则和你仍然有效的礼物产品 ID。

在 CartRule 中(或您需要的地方)添加一个静态方法并直接调用 product.tpl 并显示它

例如:{CartRule::getGifts($product.id)} 然后,处理结果

于 2017-07-17T15:10:43.927 回答
0

为相同的构建自定义查询:

$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").'"'
            );
于 2017-07-18T06:15:39.883 回答
0

我在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;
}
于 2017-12-15T02:46:55.163 回答