如何在prestashop 1.6中显示此产品的购物车规则

如何在prestashop 1.6中显示此产品的购物车规则,prestashop,cart-rules,Prestashop,Cart Rules,对于prestashop 1.6,我们为特定产品设置了购物车规则,通过添加3个产品,将添加另外1个产品作为礼品 这一切都在购物车页面上运行良好 但是,如何在特定的产品页面上显示这一点呢 $context::$this->$cart->$getCartRules(); 不显示在产品页面上 $context::$this->$cart->$getCartRules(); 我们必须在遵守购物车规则的特定产品上显示购物车规则 ex. "buy this product and

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

这一切都在购物车页面上运行良好

但是,如何在特定的产品页面上显示这一点呢

$context::$this->$cart->$getCartRules();
不显示在产品页面上

$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;
}