Ranjeet singh
Ranjeet singh

Reputation: 794

display category on left side bar in magento

I just want to display category and subcategory on left side bar, i have a code that work according to my need but this code only display name of the category it didn't get url for a particular category name. code :-

<?php 
$_categories = Mage::getBlockSingleton('catalog/navigation'); 
foreach ($_categories->getStoreCategories() as $_category) { 
$category = Mage::getModel('catalog/category'); 
$category->load($_category->getId()); 
$subcategories = explode(',', $category->getChildren()); 
?> 

    <?php 
    foreach ($subcategories as $subcategoryId) { 
    $category->load($subcategoryId); 
    echo '<li><a href="' . $category->getURL() . '">' . $category->getName() . '</a></li>'; 
    } 
    ?> 

<?php
}  
?>

It only display name for each subcategory but can't linked it with particular url for each sub category properly. suggest me where i did mistake.

Upvotes: 0

Views: 524

Answers (1)

Sunil Verma
Sunil Verma

Reputation: 2500

Instead of using category object you need to load the subcategory again ex:

<?php 
foreach ($subcategories as $subcategoryId) { 
//$category->load($subcategoryId); instead
$subcategory = Mage::getModel("catalog/category")->load($subcategoryId);
echo '<li><a href="' . $subcategory->getURL() . '">' . $subcategory->getName() . '</a></li>'; 
} 
?>

Second and good method as follows :

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
    <?php foreach($_categories as $_category): ?>
        <li>
            <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
                <?php echo $_category->getName() ?>
            </a>
            <?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
            <?php $_subcategories = $_category->getChildrenCategories() ?>
            <?php if (count($_subcategories) > 0): ?>
                <ul>
                    <?php foreach($_subcategories as $_subcategory): ?>
                        <li>
                            <a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
                                <?php echo $_subcategory->getName() ?>
                            </a>
                        </li>
                    <?php endforeach; ?>
                </ul>
            <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

Please note that you may need to tweak some bit of code above.

Hope this helps.

Upvotes: 1

Related Questions