2012-04-20 45 views
0

在下面的代碼中,我打印了一個產品列表,一個庫存清單,出於某種原因,使其工作的唯一方法是在循環遍歷它們的同時再次實例化產品。否則,我錯過了價格和庫存。爲什麼我需要實例化產品兩次?

任何想法?

這裏是我的代碼,

 $data = Mage::getModel('catalog/product')->getCollection() 
         ->addAttributeToSelect('name') 
         ->addAttributeToSelect('type_id') 
         ->addAttributeToSelect('sku') 
         ->addAttributeToSort('name', 'ASC') 
         ->addFilter('type_id', 'simple'); 

     ?><table dir="ltr" summary="Stock report table"> 
      <thead> 
       <tr> 
        <th>Id</th> 
        <th>Type</th> 
        <th>SKU</th> 
        <th>Name</th> 
        <th>Price</th> 
        <th>Stock</th> 
       </tr> 
      </thead> 
      <tbody> 
       <?php 

     $i = 0; 
     foreach($data as $product){ 

      $p = Mage::getModel('catalog/product')->load($product->getId()); 

      echo "<tr>"; 

      echo "<td>".$p->getId()."</td>"; 
      echo "<td>".$p->getTypeId()."</td>"; 
      echo "<td>".$p->getSku()."</td>"; 
      echo "<td>".$p->getName()."</td>"; 
      echo "<td>&pound;".number_format($p->getPrice(), 2)."</td>"; 
      echo "<td>".$p->getData('stock_item/qty')."</td>"; 

      $i++; 
//   if($i == 1){ break; } 
     } 

     ?></tbody> 
     </table> 
     <?php 

回答

1

貌似股票是不是目錄模塊的一部分!它有自己的模塊,名爲CatalogInventory,它處理產品的stock_item部分。

所以我不得不添加以下,

當選擇我的收藏

$data = Mage::getModel('catalog/product')->getCollection() 
       ->addAttributeToSelect('name') 
       ->addAttributeToSelect('type_id') 
       ->addAttributeToSelect('sku') 
       ->addAttributeToSelect('price') 
       ->addAttributeToSort('name', 'ASC') 
       ->addFilter('type_id', 'simple'); 

,然後循環實例股票項目並返回數量的數據項時,

$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty(); 
1

在加載集合之前,您應該添加這些屬性(價格和stock_status):

$data = Mage::getModel('catalog/product')->getCollection() 
        ->addAttributeToSelect('name') 
        ->addAttributeToSelect('type_id') 
        ->addAttributeToSelect('sku') 
        ->addAttributeToSort('name', 'ASC') 
        ->addFilter('type_id', 'simple') 
        ->addAttributeToSelect('price') 
        ->addAttributeToSelect('stock_status'); 
+0

這適用於價格,根據我的答案。但是,這似乎不適用於股票。我認爲這是因爲我們爲我們的產品使用了OrganicInternet_SimpleConfigurableProducts,這意味着'stock_status'只是返回一個空白'stock_item'數組 – 2012-04-20 15:15:01

相關問題