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