Ответ 1
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!
}