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

Posted

技术标签:

【中文标题】Magento - 包含当前用户愿望清单的产品系列【英文标题】:Magento - Product Collection with the current user's Wishlist 【发布时间】:2012-03-08 18:05:44 【问题描述】:

在 Magento php 控制器中,如何获取包含登录用户(即当前用户)愿望清单中列出的产品的产品集合。

我正在使用以下方式获取愿望清单:

$wishList = Mage::getModel('wishlist/wishlist')->loadByCustomer(Mage::getSingleton('customer/session')->getCustomer());

这包含正确数量的项目。

但我想获得一个产品集合。我试过了:

$productCollection = $wishList->getProductCollection();

$productCollection = $wishList->getProductCollection()->addAttributeToSelect('id')->load();

但我得到的产品集合的长度为 0。

我如何获得产品集合?

【问题讨论】:

【参考方案1】:

您可以使用愿望清单助手中的getWishlistItemCollection(有关详细信息,请参阅链接)返回一组物品,然后您需要从该物品中获取产品。

我一直在使用以下代码创建产品的关联数组,然后我用它来确定我在列表页面中显示的产品是否在愿望清单中...希望这会有所帮助:

public function getWishList() 
    $_itemCollection = Mage::helper('wishlist')->getWishlistItemCollection();
    $_itemsInWishList = array();

    foreach ($_itemCollection as $_item) 
        $_product = $_item->getProduct();

        $_itemsInWishList[$_product->getId()] = $_item;
    

    return $_itemsInWishList;   
 

【讨论】:

【参考方案2】:

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

<?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;   ?> 

【讨论】:

【参考方案3】:
$customer = Mage::getSingleton('customer/session')->getCustomer();

$wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customer, true);

$wishListItemCollection = $wishlist->getItemCollection();

foreach ($wishListItemCollection as $item)

   // do things

【讨论】:

以上是关于Magento - 包含当前用户愿望清单的产品系列的主要内容,如果未能解决你的问题,请参考以下文章

Magento 删除愿望清单中的产品

Magento - 访问客户的愿望清单

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

Magento 2在愿望清单中仅显示5个产品

如何从 Magento 2.0 Luma 模板中删除“我的愿望清单”和“比较产品”块?

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