Magento: Get all category and subcategory products
Magento get all category and subcategory products which are assigned to categories at different levels. Below script will show you all the categories, and all the associated product names under each of those categories.
<?php | |
require_once('app/Mage.php'); | |
umask(0); | |
Mage::app('admin'); | |
set_time_limit(0); | |
$category = Mage::getModel('catalog/category'); | |
$tree = $category->getTreeModel(); | |
$tree->load(); | |
$ids = $tree->getCollection()->getAllIds(); | |
if ($ids) | |
{ | |
foreach ($ids as $id) | |
{ | |
$cat = Mage::getModel('catalog/category'); | |
$cat->load($id); | |
if($cat->getLevel()==3 && $cat->getIsActive()==1) | |
{ | |
$category1 = Mage::getModel('catalog/category')->load($cat->getId()); | |
$products = Mage::getResourceModel('catalog/product_collection') | |
->addAttributeToSelect('name') | |
->addCategoryFilter($category1); | |
echo "<b>".$cat->getName()."</b><br>"; | |
foreach ($products as $product) { //print_r($product->getData());exit; | |
echo " " . $product->getName() . " - ". $product->getSku() . "<br/>"; | |
} | |
} | |
} | |
} | |
?> |
Note the line which checks category getLevel()==3, you can change this line to get different subcategory levels by adjusting it.
For root category, getLevel() should be 1.
For all the main/primary categories, getLevel() should be 2.
For all the subcategories, getLevel() should be 3.
For all the subsubcategories, getLevel() should be 4.
and so on…
Above script will get you all the category and subcategories products, products assigned to each and every categories of your store.
Magento: Get all products with quantities and Out Of Stock
Magento get all the simple products which have greater than 0 quantity and are still Out of Stock in inventory.
<?php | |
require_once('app/Mage.php'); | |
umask(0); | |
Mage::app('admin'); | |
set_time_limit(0); | |
$productCollection = Mage::getModel('catalog/product') | |
->getCollection() | |
->addAttributeToSelect('*') | |
->joinField('qty', | |
'cataloginventory/stock_item', | |
'qty', | |
'product_id=entity_id', | |
'{{table}}.is_in_stock=0', | |
'left') | |
->addAttributeToFilter('qty', array("gt" => 0)); | |
echo "<h2>Simple Products with >0 quantity and Out of Stock</h2>"; | |
foreach($productCollection as $product) { //print_r($product->getData());exit; | |
if($product->getTypeId() == 'simple') | |
echo $product->getName() . " | " . $product->getSku() . "<br>"; | |
} | |
echo 'Done'; | |
?> |
Magento: Get all products with 0 quantity and In Stock
Magento get all products which have zero quantity and are still In Stock in inventory. Below script will show you all such simple products.
<?php | |
require_once('app/Mage.php'); | |
umask(0); | |
Mage::app('admin'); | |
set_time_limit(0); | |
$productCollection = Mage::getModel('catalog/product') | |
->getCollection() | |
->addAttributeToSelect('*') | |
->joinField('qty', | |
'cataloginventory/stock_item', | |
'qty', | |
'product_id=entity_id', | |
'{{table}}.is_in_stock=1', | |
'left') | |
->addAttributeToFilter('qty', array("eq" => 0)); | |
echo "<h2>Simple Products with 0 quantity and In Stock</h2>"; | |
foreach($productCollection as $product) { //print_r($product->getData());exit; | |
if($product->getTypeId() == 'simple') | |
echo $product->getName() . " | " . $product->getSku() . "<br>"; | |
} | |
echo 'Done'; | |
?> |
Magento: Get all products without categories (orphaned products)
Magento get all the configurable/simple products which are not associated with any categories, which are orphaned products. To get all the products (regardless of their type), simply ignore the condition where it checks for type_id in the below query and comment the condition line in foreach loop.
Below script will get all such products, you can create new PHP file at the root of Magento installation and paste the code:
<?php | |
require_once('app/Mage.php'); | |
umask(0); | |
Mage::app('admin'); | |
set_time_limit(0); | |
$i=0; | |
$sql = "select | |
type_id,sku | |
from catalog_product_entity a | |
left join catalog_category_product cp on cp.`product_id` = a.entity_id | |
left join catalog_product_relation cpr on cpr.child_id = a.entity_id | |
where | |
cp.product_id is null | |
and cpr.parent_id is null | |
and a.type_id = 'configurable'"; | |
$connection = Mage::getSingleton('core/resource')->getConnection('core_read'); | |
//echo count($connection->fetchAll($sql));exit; | |
foreach ($connection->fetchAll($sql) as $arr_row) { | |
$pid = $arr_row['sku']; | |
$product = Mage::getModel('catalog/product')->loadByAttribute('sku',$pid); | |
if($product->getTypeId()!='configurable') continue; | |
$i++; | |
echo $i .") ". $product->getName() . " - " . $product->getSku() . "<br>"; | |
} | |
?> |
Magento Get most popular products in a category
Magento get most popular products in any specified category using below code, you can show them in the sidebar of product detail page to let your visitors know the popularity of the products for that category.
$category = Mage::getModel('catalog/category')->load($categoryId); | |
$products = Mage::getResourceModel('reports/product_collection') | |
->addOrderedQty() //total number of quantities ordered | |
->addAttributeToSelect('*') //get all attributes | |
->setOrder('ordered_qty', 'desc') //most ordered quantity products first | |
->addCategoryFilter($category); |
Welcome to my Blog
Certifications
Honor
Recognition
Contributions
Categories
- Apache (2)
- ChatGPT (1)
- Domain name (2)
- eCommerce (2)
- htaccess (1)
- Humor (3)
- Instagram API (1)
- jQuery (4)
- JSON (1)
- Linux (10)
- Magento (142)
- Magento admin (58)
- Magento Certification (5)
- Magento error (13)
- Magento frontend (68)
- Magento Imagine (2)
- Magento Interview (5)
- Magento Master (2)
- Magento2 (10)
- Mobile (1)
- MySQL (7)
- OpenAI (1)
- OroCRM (2)
- Performance (2)
- PHP (8)
- Prototype JS (3)
- Security (4)
- Wordpress (3)
- XML (2)