2010-04-23 15 views
13

Bazı ürünlerin stokta olup olmadığını kontrol etmek istiyorum ancak isInStock() yöntemini kullanırsam her zaman TRUE değerini döndürür. Ürünlerim ilişkili ürünler içermeyen yapılandırılabilir ürünlerdir ve "Stok Durumu" sekmesi "Stok Kalitesi" olarak ayarlanmıştır. Neyi yanlış yapıyorum? Teşekkürler!Bir ürüne ait isInStock() yöntemi ile magento sorunu

+1

Lütfen kontrol etmek için kullandığınız kod satırını gönderin. –

cevap

51

Magento bu noktada çok fazla geçmişe sahiptir, bu yüzden her zaman yöntem isimlerinin "açıkça göründüğü" ne yapacağına güvenmek iyi bir fikirdir. Açıkçası birkaç yıl önce açık değildi. Eğer Mage_Catalog_Model_Product sınıfının

public function isInStock() 
{ 
    return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED; 
} 
public function getStatus() 
{ 
    return $this->_getData('status'); 
} 

aşağıdaki iki yöntemden bakarsak

olduğunu görebilirsiniz isInStock çekler durum nitelik, Ürün yöneticinin "Genel" bölümünde ayarlayın.

yerine bu

$stockItem = $product->getStockItem(); 
if($stockItem->getIsInStock()) 
{ 
    //in stock! 
} 
else 
{ 
    //not in stock! 
} 
+0

O kadardı! Teşekkürler Alan! –

+0

Harika cevap. Çok teşekkürler! :) – zuzuleinen

+0

çalışmıyor. – ahnbizcad

0
$qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); 
+3

Bu sadece qty'yi kontrol edecektir. Bununla birlikte Stok Stok Durumu magento'da "Stokta Kalmadı" olarak ayarlanabilir. Bu bunun için kontrol etmeyecek. – nkobber

+0

Yanlış soruya doğru cevap – ahnbizcad

0
<?php if ((int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()>0) { ?> 

<?php } else {} ?> 

Basit ürün kategorisi görünümü için çalıştı deneyin.

+0

Cevabınız @ Muk'ın cevabı ile karşılaştırıldığında yeni bir cevap var mı? – Hulk1991

+0

Eh, sadece onları bir araya getirdim. İşe yaramaz olduğu ortaya çıktı. –

+0

Cevabınızın aynı olup olmadığını yanıtlamak için diğer cevabı analiz etmeye çalışın – Hulk1991