Magento 1.7:通过查询字符串将可配置产品添加到购物车

Jam*_*mes 2 magento magento-1.7

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
Run Code Online (Sandbox Code Playgroud)

它还提到这在版本1.3之前是有效的.

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

http://www.your_domain.com.au/checkout/cart/add/uenc/aHR0cDovL3d3dy5jdWx0dXJla2luZ3MuY29tLmF1L2FjY2Vzc29yaWVzL3NvbC1yZXB1YmxpYy90cmFja3Mtb24tZWFyLWJsYWNrLTM1OTg5Lmh0bWw_X19fU0lEPVU,/product/35900/
Run Code Online (Sandbox Code Playgroud)

产品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
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可以通过URL将可配置产品添加到Magento中的购物车中,如果是这样,传递super_attribute id和Attribute Option Value的格式是什么?

blm*_*age 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
        )));
}
Run Code Online (Sandbox Code Playgroud)