Проблема Magento с вызовом метода isInStock () на продукте

Я хочу проверить, имеются ли какие-либо продукты на складе, но независимо от того, что я делаю, метод isInStock() всегда возвращает TRUE . Мои продукты – это настраиваемые продукты без связанных продуктов, а на вкладке «Инвентарь» «Доступность акций» установлено значение «Нет на складе». Что я делаю не так? Благодаря!

Solutions Collecting From Web of "Проблема Magento с вызовом метода isInStock () на продукте"

На данный момент у 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! } 
 $qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); 
 <?php if ((int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()>0) { ?> <?php } else {} ?> 

Он работал для простого представления категории продукта.