Prestashop:根据用户组和产品禁用添加到购物车按钮

Prestashop: disable add-to-cart button depending on user group and product

我使用的是 Prestashop 1.6.2,我在尝试添加此功能时遇到问题。

我对 mod prestashop 有点陌生,问题是我有一些产品只能为专业人士购买。每次用户注册时,它都会被分配到一个用户组(专业和非专业)。

我知道我可以隐藏特定用户组的类别,但这种方法并不完美,因为如果他们知道产品名称或搜索它,他们仍然可以访问产品页面并购买。

是否有任何聪明的变量可以编辑 product.tpl 以显示符合上述条件的按钮?或者 mod 规则或其他方法来做到这一点?

我不知道是否已经在 smarty 中设置了一个变量,但是你可以用客户对象定义你的客户变量: 找到 controllers/front/ProductController.php 文件,找到 assignPriceAndTax 方法,最后你会发现类似这样的内容:

$this->context->smarty->assign(array(
            'quantity_discounts' => $this->formatQuantityDiscounts($quantity_discounts, $product_price, (float)$tax, $ecotax_tax_amount),
            'ecotax_tax_inc' => $ecotax_tax_amount,
            'ecotax_tax_exc' => Tools::ps_round($this->product->ecotax, 2),
            'ecotaxTax_rate' => $ecotax_rate,
            'productPriceWithoutEcoTax' => (float)$product_price_without_eco_tax,
            'group_reduction' => $group_reduction,
            'no_tax' => Tax::excludeTaxeOption() || !$this->product->getTaxesRate($address),
            'ecotax' => (!count($this->errors) && $this->product->ecotax > 0 ? Tools::convertPrice((float)$this->product->ecotax) : 0),
            'tax_enabled' => Configuration::get('PS_TAX') && !Configuration::get('AEUC_LABEL_TAX_INC_EXC'),
            'customer_group_without_tax' => Group::getPriceDisplayMethod($this->context->customer->id_default_group),
        ));

添加到这个数组

'customer_object' => $this->context->customer,

您可以在产品页面上使用此变量。 您可以使用相同的方式为站点上的所有 'buy-windows' 关闭这些按钮。