mangento将产品选项添加到心愿单中

时间:2015-06-30 01:25:00

标签: magento options

我们的商店有一些复杂的配置选项。我知道您可以在报价和销售项目中存储自定义选项,但愿望清单wishlistwishlist_item的两个表格不会显示存储此类信息的任何字段。

我在搜索后找到了这段代码:

$wishlist=Mage::helper('wishlist')->getWishlist();
$storeId = Mage::app()->getStore()->getId();
$model = Mage::getModel('catalog/product');
$_product = $model->load($productId);
$params = array('product' => $productId,
    'qty' => 1,
    'store_id' => $storeId,
    'options' => array('optionId'=>'optionValue')
);
$request = new Varien_Object();
$request->setData($params);
$result = $wishlist->addNewItem($_product, $request);

现在这将项目添加到心愿单确定,但它不会添加'选项'数组或至少我能看到的任何地方。

此外,我对Magento不熟悉,不知道选择哪个选项,即上面显示的'optionId',甚至是要查看的表格。

我想创建一个名为additional_config的GLOBAL选项,该选项适用于任何产品,然后传递此选项ID和序列化数组。我该怎么做?感谢

2 个答案:

答案 0 :(得分:0)

我多年来一直遇到麻烦。我试图复制Magento添加到wishlist控制器的动作。但是,它对我不起作用。

在调试 admin 面板的控制器时,我发现Varien_Object应该具有以下键:例如product='99', qty='1', super_attribute[133]='3'

所以你的代码几乎是正确的,除了你需要'super_attribute'而不是'options'。

$params = array('product' => $productId,
    'qty' => 1,
    'store_id' => $storeId,
    'super_attribute' => array('optionId'=>'optionValue')
);

如果这样做,您可以将可配置选项添加到心愿单中的项目。

答案 1 :(得分:0)

打开app / design / frontend / default / yourtheme / template / catalog / product / view.phtml

删除默认添加到心愿单按钮并替换下面的

<?php $_wishlistSubmitUrl = $this->helper('wishlist')->getAddUrl($_product); ?>
<span onclick="wishlistWithOption('<?php echo $_wishlistSubmitUrl; ?>');" style="cursor:pointer"><i class="pd-wishlist"></i>Add to Wishlist</span>

在此代码之后放入以下javascript函数

<script type="text/javascript">
 function wishlistWithOption(url){
  var sel = jQuery('select').attr("id");
  if(sel){
   var selId = sel.split('_');
   setLocation(url+selId[1]+'/'+jQuery('#'+sel).val());
  }else{
   setLocation(url);
  }
 }
</script>

现在打开app / code / core / Mage / Wishlist / controllers / IndexController.php文件。你也可以为这个功能创建Observer。

在_addItemToWishList()函数中添加以下代码。 $ requestParams = $ this-&gt; getRequest() - &gt; getParams();之后线。

$i = 1;
foreach($requestParams as $key=> $_requestParams){
    if($i == 3){
        $requestParams = array(
            'product' => $productId,
            'store_id' => $storeId,
            'qty' => 1,
            'options' => array($key=>$_requestParams)
        );
    }
    $i++;
}

注意:以上代码仅适用于具有选择(下拉)自定义选项的产品,如尺寸,颜色..

代码来自:http://chandreshrana.blogspot.in/2016/08/how-to-add-product-in-wishlist-with.html