javascript - 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_attribute,id_combination,idCombination,ipa。大多数关于 id_product_attribute 的信息(可在 Google 上找到)都与 SEO 相关,并且“出于 SEO 目的在 url 中包含 id_product_attribute 并不是一个好主意”。
解决方案
有一个叫做 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。
推荐阅读
- mysql - 为什么 SELECT "099anystring" = 99 在 Mysql 中返回 true?
- mysql - 在mysql中应用列条件
- java - 使用工作流在 AEM 中复制粘贴页面
- google-apps-script - 如何简化我为每个不同范围复制/粘贴多次的谷歌应用脚本?
- python - 如何根据字典中的部分键对字典列表进行分组
- node.js - 尝试在 Windows 上构建项目时 npm install 失败
- javascript - 公共类字段 react 用于绑定回调函数
- android - Android Pusher java.io.FileNotFoundException:尝试设置 Authorizer 时,Authenticating API 调用未到达服务器
- java - 在 Java 字节码/类格式中,是什么决定了一个方法是否覆盖另一个方法?
- html - 如何在css上完全删除左边距