首页 > 解决方案 > PrestaShop 1.7 如何在产品页面上获取 id_product_attribute?

问题描述

id_product_attribute 在 URL 中可用 - 值“10”: http://localhost/presta/women/2-10-brown-(...).html#/2-size-m

我需要从当前产品页面获取当前 id_product_attribute。可能来自 $_GET,或者来自 DOM 元素,或者 presta shop 变量 - 但我必须在添加到购物车之前将它传递给 JavaScript 函数(即使最后,客户不将产品添加到购物车 - 这就是为什么我可以'不使用钩子:“actionCartSave”)

我可以从钩子 displayAfterProductThumbs 访问这个值 - 但是获取当前值有问题。要获得正确的值,我需要:

1)在产品页面上选择产品属性(尺寸、颜色)

2) 刷新页面触发钩子“displayAfterProductThumbs”

3) 读取数据

但我需要它而不刷新。

在文档中我什么也找不到。试图找到短语:id_product_attributeid_combinationidCombinationipa。大多数关于 id_product_attribute 的信息(可在 Google 上找到)都与 SEO 相关,并且“出于 SEO 目的在 url 中包含 id_product_attribute 并不是一个好主意”。

标签: javascriptphpprestashopprestashop-1.7

解决方案


有一个叫做 displayProductAdditionalInfo 的钩子。在模块中注册钩子,并在参数中获取产品详细信息。当我们更改产品组合时,此代码将运行。因此 idProductAttribute 将在组合更改时自动更新。

public function hookDisplayProductAdditionalInfo($params)
{
    if isset($params['product']) {
        //  Now return the input type hidden with idproductattribute 
       return '<input type="hidden" name="id_product_attribute" id="product_attribute_info" value="'.$params['product']['id_product_attribute'].'"/>';
    }
}

现在点击添加到购物车阻止默认操作并从输入隐藏字段中获取 idProductAttribute。


推荐阅读