2010-04-23 15 views
13

पर कॉलिंग isInStock() विधि के साथ Magento समस्या है, मैं जांचना चाहता हूं कि कुछ उत्पाद स्टॉक में हैं या नहीं, लेकिन जो भी मैं isInStock() विधि करता हूं, हमेशा TRUE देता है। मेरे उत्पाद कॉन्फ़िगर करने योग्य उत्पाद हैं जिनमें कोई संबंधित उत्पाद नहीं है और "इन्वेंटरी" टैब "स्टॉक उपलब्धता" के तहत "स्टॉक ऑफ आउट" पर सेट किया गया है। मैं क्या गलत कर रहा हूँ? धन्यवाद!एक उत्पाद

+1

कृपया यह जांचने के लिए आप जिस कोड का उपयोग कर रहे हैं उसे पोस्ट करें। –

उत्तर

51

Magento इस बिंदु पर इतिहास का एक बहुत है, इसलिए यह एक अच्छा विचार है हमेशा नहीं विश्वास है कि विधि के नाम क्या करेंगे "स्पष्ट लगता" करने के लिए। स्पष्ट कुछ साल पहले स्पष्ट नहीं था।

आप Mage_Catalog_Model_Product वर्ग

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

पर निम्नलिखित दो तरीकों को देखें, तो आप देख सकते हैं कि isInStock चेकों स्थिति विशेषता, उत्पाद व्यवस्थापक के "सामान्य" खंड में निर्धारित किया है।

इस बजाय

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

वह था! धन्यवाद एलन! –

+0

ग्रेट उत्तर। आपका बहुत बहुत धन्यवाद! :) – zuzuleinen

+0

काम नहीं करता है। – ahnbizcad

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

यह केवल qty की जांच करेगा। हालांकि, स्टॉक उपलब्धता को Magento में "स्टॉक ऑफ आउट" पर सेट किया जा सकता है। यह इसके लिए जांच नहीं करेगा। – nkobber

+0

गलत प्रश्न का सही उत्तर – ahnbizcad

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

<?php } else {} ?> 

यह सरल उत्पाद श्रेणी देखने के लिए काम किया की कोशिश करो।

+0

क्या आपके उत्तर में @ Muk के उत्तर की तुलना में कोई नया है? – Hulk1991

+0

ठीक है, मैं बस उन्हें एक साथ रखता हूं। यह पता चला कि यह बेकार है। –

+0

दूसरे के जवाब का विश्लेषण करने का प्रयास करें कि आपका उत्तर समान है या नहीं – Hulk1991

संबंधित मुद्दे