2010-04-23 7 views
13

Voglio verificare se alcuni prodotti sono in magazzino ma qualunque cosa faccia il metodo isInStock() restituisce sempre TRUE. I miei prodotti sono configurabili senza prodotti associati e nella scheda "Spazio pubblicitario" "Disponibilità magazzino" è impostato su "Esaurito". Cosa sto sbagliando? Grazie!Il problema Magento con la chiamata è il metodoInStock() su un prodotto

+1

Si prega di inviare la riga di codice che si sta utilizzando per verificare questo. –

risposta

51

Magento ha un sacco di storia a questo punto, quindi è una buona idea non sempre fidarsi che i nomi dei metodi faranno ciò che "sembra ovvio". Ovvio ora non era evidente qualche anno fa.

Se si guardano le due seguenti metodi sulla classe Mage_Catalog_Model_Product

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

Si può vedere che isInStock controlli lo stato attributi, impostate nella sezione "Generale" della amministrazione del prodotto.

Prova a modificare la

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

E 'stato! Grazie Alan! –

+0

Ottima risposta. Molte grazie! :) – zuzuleinen

+0

non funziona.aa – ahnbizcad

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

Questo controllerà solo il qty. Tuttavia, la disponibilità di magazzino può essere impostata su "Fuori scorta" in Magento. Questo non controllerà per quello. – nkobber

+0

risposta corretta alla domanda sbagliata – ahnbizcad

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

<?php } else {} ?> 

Ha funzionato per la semplice visualizzazione categoria di prodotto.

+0

C'è qualche novità nella risposta rispetto alla risposta di @ Muk? – Hulk1991

+0

Beh, li ho appena messi insieme. Si è scoperto che è inutile. –

+0

Prova ad analizzare la risposta di altri se la tua risposta è uguale o no – Hulk1991

Problemi correlati