Magento - 访问客户的愿望清单

Posted

技术标签:

【中文标题】Magento - 访问客户的愿望清单【英文标题】:Magento - Accessing a customer's wishlist 【发布时间】:2012-04-04 05:07:51 【问题描述】:

我希望能够加载客户的愿望清单并返回列表中产品的产品 ID

我正在使用:

$wishList = Mage::getSingleton('wishlist/wishlist')->loadByCustomer($customer);
$wishListItemCollection = $wishList->getItemCollection();

问题是项目集合中的数组受到保护,我找不到任何方法来提取数据。

还有其他方法吗?

【问题讨论】:

【参考方案1】:

你已经非常接近你的目标了。

$wishList = Mage::getSingleton('wishlist/wishlist')->loadByCustomer($customer);
$wishListItemCollection = $wishList->getItemCollection();

if (count($wishListItemCollection)) 
    $arrProductIds = array();

    foreach ($wishListItemCollection as $item) 
        /* @var $product Mage_Catalog_Model_Product */
        $product = $item->getProduct();
        $arrProductIds[] = $product->getId();
    

数组变量 $arrProductIds 现在将包含该特定客户已加入愿望清单的所有产品 ID 的列表。

【讨论】:

你也可以简单地使用 $item->getProductId(); - 无需加载整个产品。 从可重用性的角度来看,获得整个产品更有意义。例如显示产品名称和链接,您需要的不仅仅是 ID。【参考方案2】:

您的代码是正确的。可能有客户未加载。这是代码。

$customer = Mage::getSingleton('customer/session')->getCustomer();
$wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customer, true);
$wishListItemCollection = $wishlist->getItemCollection();

foreach ($wishListItemCollection as $item)

   // do things

【讨论】:

【参考方案3】:

在任何模板中,使用 magento 1.8,这都有效

Total: <?php echo $this->helper('wishlist')->getItemCount() ?>

// Items
$this->helper('wishlist')->getWishlist()->getItemCollection();

【讨论】:

【参考方案4】:
$wishList = Mage::getSingleton('wishlist/wishlist')->loadByCustomer($customer);
$wishListItemCollection = $wishList->getItemCollection();

foreach ($wishListItemCollection as $item)

    //do your thing e.g. echo $item->getName();

【讨论】:

【参考方案5】:

尝试使用产品的所有详细信息,如名称、图像等...

<?php
 $customer = Mage::getSingleton('customer/session')->getCustomer();
 if($customer->getId())

     $wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customer, true);
     $wishListItemCollection = $wishlist->getItemCollection();
     foreach ($wishListItemCollection as $item)
     
           echo $item->getName()."</br>";
           echo $item->getId()."</br>";
           echo $item->getPrice()."</br>";
           echo $item->getQty()."</br>";  
           $item = Mage::getModel('catalog/product')->setStoreId($item->getStoreId())->load($item->getProductId());
          if ($item->getId()) :
?>
<img src="<?php echo Mage::helper('catalog/image')->init($item, 'small_image')->resize(113, 113); ?>"   />
<?php endif;   ?> 

【讨论】:

以上是关于Magento - 访问客户的愿望清单的主要内容,如果未能解决你的问题,请参考以下文章

如果项目已经在 magento 的愿望清单中,则隐藏愿望清单按钮

Magento 在布局中设置多商店愿望清单错误

用于添加产品愿望清单的 Magento 自定义 API

Magento 删除愿望清单中的产品

Magento - 包含当前用户愿望清单的产品系列

Magento - 删除 1.4.2 中的愿望清单链接?