Getallvisibleitems()返回在目录/搜索中不可见的产品

时间:2014-12-08 21:44:10

标签: magento magento-1.7

我试图通过使用getAllItems()遍历订单中的所有商品来获取订单商品ID。问题是我只得到简单的产品,即使产品有父项(用$ item-> getParentItemId()双重检查)并且不能单独看到。即使我尝试使用getAllVisibleItems(),我也只能获得简单的产品。在管理面板中,我可以看到只有可配置的产品,我没有得到,是可见的,没有一个简单的产品。

此外,是否可以拥有一个单独可见的简单产品,并且还可以与分组/可配置产品相​​关联?这与帖子的其他部分无关,但我也很感激这里的任何帮助。谢谢。

这是我的代码的相关部分:

foreach ($order->getAllVisibleItems() as $item) 
{
    $k++;
    $productId = $item->getProductId();
    $product     = Mage::getModel('catalog/product')->load($productId);

    Mage::log($k.")".$product->getTypeId()." and id is ".$item->getId(), null, "MODB.log");
    if( $product->getTypeId() == 'simple' ){

        if ($item->getData('row_total_incl_tax') != null){
        $price = $item->getData('row_total_incl_tax');
        }

    if (!$item->getParentItemId){ //get simple prods data;}
    else{//get parent prods data;}.......

1 个答案:

答案 0 :(得分:0)

我认为getAllVisibleItems并不意味着"在目录中可见"

public function getAllVisibleItems()
{
    $items = array();
    foreach ($this->getItemsCollection() as $item) {
       if (!$item->isDeleted() && !$item->getParentItemId()) {
          $items[] = $item;
      }
    }
    return $items;
}

^如果未删除产品: !$本期特价货品>请将isDeleted() &安培;&安培; 没有父产品(适用于可配置产品): !$本期特价货品> getParentItemId() 所以它是可见的。

尝试将可见性过滤器添加到集合

$collection->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);