2

Magento Wiki 有一个资源用于通过 Magento < 1.3 HERE的查询字符串将产品添加到购物车

这引用了使用此示例的方法:

http://www.your_domain.com/checkout/cart/add?product=68&qty=1&super_attribute[528]=55&super_attribute[525]=56

它还提到这在 1.3 版之前有效。

我在 1.7 中一直在玩这个,并注意到 1.7 中的一个主要区别是表单操作属性的 ->getAddUrl() 方法中的加密密钥,所以现在 URL 看起来更像

http://www.your_domain.com.au/checkout/cart/add/uenc/aHR0cDovL3d3dy5jdWx0dXJla2luZ3MuY29tLmF1L2FjY2Vzc29yaWVzL3NvbC1yZXB1YmxpYy90cmFja3Mtb24tZWFyLWJsYWNrLTM1OTg5Lmh0bWw_X19fU0lEPVU,/product/35900/

产品 ID 为 35900。

如果我在浏览器中使用此 URL,它会将我定向到产品页面,并显示一条消息Please specify the product's option(s).

我一直在尝试在 URL 中传递所需的属性选项值以将产品添加到购物车,但没有成功。(为了节省空间,我省略了包含加密密钥的 URL)我尝试了这些方法无济于事:

/product/35900/super_attribute/49265/4834
/product/35900/super_attribute/49265=4834
/product/35900/49265=4834
/product/35900/49265/4834

我的问题是:是否可以通过 URL 将可配置产品添加到 Magento 中的购物车,如果可以,传递 super_attribute id 和属性选项值的格式是什么?

4

3 回答 3

6

你可以使用这样的东西:

$_typeInstance = $_product->getTypeInstance(true);
$_children     = $_typeInstance->getUsedProducts(null, $_product);
$_attributes   = $_typeInstance->getUsedProductAttributes($_product);
$_cartHelper   = Mage::helper('checkout/cart');

foreach ($_children as $_child) {
    $_superAttributes = array();

    foreach ($_attributes as $_attribute) {
        $_superAttributes[$_attribute->getAttributeId()] = $_child->getData($_attribute->getAttributeCode());
    }

    $_addUrl = $_cartHelper->getAddUrl($_product, array(
        '_query' => array(
            'super_attribute' => $_superAttributes
        )));
}
于 2013-07-09T08:07:53.110 回答
3

这个问题也发布在 magento.stackexchange 上,用户 Marius 好心地给了我解决方案......

This has worked for me on CE 1.7.0.2 (with sample data):

/checkout/cart/add/product/126?super_attribute[525]=100&super_attribute[272]=22
NOTE (this puzzles me a bit):
There is a difference between calling:

/checkout/cart/add/product/126?super_attribute[525]=100&super_attribute[272]=22
and

/checkout/cart/add/product/126?super_attribute[272]=22&super_attribute[525]=100
I mean the order of the super_attribute parameters is important. After calling the 2 URLs above I ended up with 2 cart lines of the same product with the same options. one looked like this:

Size Small Color Green
and the other was

Color Green Size Small
I guess if you add the products to cart via URL you should keep the order of the attributes as shown in the product view page for consistency.

根据他的建议,您可以使用该方法构建添加到购物车的链接。

于 2013-07-10T04:37:39.887 回答
0

在最新的 magento 中,我们还需要添加 form_key:

https://{site-name}/checkout/cart/add/product/{product_id}/form_key/{form_key}?super_attribute[{attribute_id}]={attribute_value}&super_attribute[{attribute_id}]={attribute_value}
于 2017-10-31T07:25:52.610 回答