I am trying to change the availability message in category view in the file list.phtml depend on the qty of the product. I did on the simple products but I couldn't manage to get results for the configurable products. I tried to use the function that I found on this answer How to get stock quantity of child product from configurable product in Magento 1.9. It is working as a function in the product view.phtml but in list.phtml I get an error like Undefined function getTypeId(). What I should add to solve the problem?
1 Answer
To answer you main question. If I am not wrong you are using this function.
function getChildrenStockQTY($product, $stock_qty = 0) {
if ($product->getTypeId() != 'configurable') return false;
$simple_ids = Mage::getResourceSingleton('catalog/product_type_configurable')->getChildrenIds($product->getId());
foreach ($simple_ids[0] as $simple_id) {
$simple_model = Mage::getModel('cataloginventory/stock_item')->loadByProduct($simple_id);
$stock_qty += $simple_model->getQty();
}
return $stock_qty;
}
Change this to
function getChildrenStockQTY($product, $stock_qty = 0) {
$product = Mage::getModel('catalog/product')->load($product->getId());
if ($product->getTypeId() != 'configurable') return false;
$simple_ids = Mage::getResourceSingleton('catalog/product_type_configurable')->getChildrenIds($product->getId());
foreach ($simple_ids[0] as $simple_id) {
$simple_model = Mage::getModel('cataloginventory/stock_item')->loadByProduct($simple_id);
$stock_qty += $simple_model->getQty();
}
return $stock_qty;
}
This function is using $product which is loaded on the listing page which is an object of product flat data and not product model. Product flat data doesn't include type id of product. Therefore we have to load
There is no simpler way to do this. It can only be achieved by getting child product ids from configurable product than loading those child products one by one and saving their stock details in an associative array. But let me warn you that this'll increase the load time of every listing page with configurable products on your Magento's frontend.
-
Thanks for the answer but where is the difference between the first and the second one? They are the same exactly. Commented Dec 14, 2020 at 17:07
-
Sorry. Edited my answer. You can check the difference now Commented Dec 14, 2020 at 17:59