Magento – Display categories and sub-categories

categorycategory-productscategory-tree

I'm tryng to display categories and subcategories on a cms page

<?php 
    $categories = Mage::getModel('catalog/category')
        ->getCollection()
        ->addAttributeToSelect('*')
        ->addIsActiveFilter();
    foreach ($_categories->getStoreCategories() as     $_category) { 
        $category = Mage::getModel('catalog/category'); 
        $category->load($_category->getId()); 
        $subcategories = explode(',', $category->getChildren()); 
?> 
        <dl> 
          <dt><?php echo $this->htmlEscape($_category->getName()); ?>
          </dt> 
          <dd> 
            <ol> 
              <?php 
                foreach ($subcategories as $subcategoryId) { 
                  $category->load($subcategoryId); 
                  echo '<li><a href="' . $category->getURL() . '">' . $category->getName() . '</a></li>'; 
                } 
              ?> 
            </ol> 
          </dd> 
        </dl> 
    <?php
      } 
    ?>

But this is returning me a fatal error Fatal error: Call to a member function getStoreCategories() on null on line 5

Best Answer

You can try below code for display all store category and subcategories.

<?php
    $_helper = Mage::helper('catalog/category');
    $categories = $_helper->getStoreCategories();

    foreach ($categories as $_category) {
        $category = Mage::getModel('catalog/category')->load($_category->getId());
        $subcategories = $category->getChildrenCategories();
        ?>
        <dl>
            <dt><?php echo $this->htmlEscape($_category->getName()); ?></dt>
            <dd>
                <ol>
                    <?php
                    foreach ($subcategories as $_subcategory) {
                        echo '<li><a href="' . $_subcategory->getURL() . '">' . $_subcategory->getName() . '</a></li>';
                    }
                    ?>
                </ol>
            </dd>
        </dl>
        <?php

    }
    ?>

Let me know if you have any query from above.

Related Topic