使用url将可配置产品添加到购物车

时间:2013-02-14 14:09:00

标签: jquery magento url-parameters

我正在尝试使用url参数向购物车添加可配置产品,但我仍然会收到“请指定产品的选项”。当我尝试使用网址将产品添加到购物车时:

/myConfigurableProduct.html?options=cart&product=6&related_product=&super_attribute[146]=60&super_attribute[147]=67&super_attribute[145]=57&super_attribute[144]=49&super_attribute[148]=69&super_attribute[149]=75&super_attribute[150]=80&qty=1

我查看了Magento文档以获得解决方案,并发现可以使用/cart/add?从购物车页面完成此操作,但我正在尝试从产品视图页面执行此操作。

选择的url super_attributes在使用表单提交时不显示错误,但在使用url时失败。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

为了解释一些事情,我们假设您希望产品页面上的链接以特定配置的方式将产品添加到购物车。例如,让我们使用“T恤”的旧备用。属性可能有颜色和大小。让我们说你出售有大小和颜色的“裤子”,但你希望用户能够使用裤子的下拉菜单和T恤衫的按钮。

按钮将被预先配置,裤子将允许任何选择

您可以在app / designt / frontend / YOURTHEME / default / template / catalog / product / view.phtml中执行以下操作

寻找

<?php if ($_product->isSaleable() && $this->hasOptions()):?>
    <?php echo $this->getChildChildHtml('container2', '', true, true) ?>
<?php endif;?>

并将其替换为此类

 <?php 
    if ($_product->isSaleable() && $this->hasOptions())
    {
        $attSetName = "TSHIRT";
        $product = Mage::registry('current_product');
        $attributeSetModel = Mage::getModel("eav/entity_attribute_set");
        $attributeSetModel->load($product->getAttributeSetId());
        $attributeSetName  = $attributeSetModel->getAttributeSetName();

        // Its only going to work on Tshirts that are configurable products
        // All others (PANTS) will fall to the default magento functionality
        if (strtoupper($attributeSetName)== $attSetName && $product->getTypeId() == "configurable")
        {
            // Here is where you will add the cart links to set up products directly to the cart
            // It *MAY* make more sense to set these up as custom variables, but for simplicity's sake, lets just hard code them in here for now

            $productA = "/?super_attribute[146]=60&super_attribute[147]=67&super_attribute[145]=57&super_attribute[144]=49&super_attribute[148]=69&super_attribute[149]=75&super_attribute[150]=80&qty=1";
            $productB = "/?super_attribute[146]=60&super_attribute[147]=67&super_attribute[145]=57&super_attribute[144]=49&super_attribute[148]=69&super_attribute[149]=75&super_attribute[150]=80&qty=1";

            echo '<div id="YOURATTRIBUTESETNAMEcustomProducst">';
            echo '<a href="/checkout/cart/add/product/' . $_product->getId() . $productA . '" />Buy Custom Option A</a>';
            echo '<a href="/checkout/cart/add/product/' . $_product->getId() . $productB . '" />Buy Custom Option B</a>';
            echo '</div>';
        }
    }
    else
    {
        // Do the default magento action
        // *not sure if container1 or container2. Each section does its own thing so
        // just experiment. Mine was container2
        echo $this->getChildChildHtml('container2', '', true, true);
    }

?>

此代码未经测试。我在飞行中对其进行了编码,我坚信它是找到一个好解决方案的基础!好运。