Magento 1.9 – Show Category in Left Navigation

databasemagento-1.9navigation

I tried implemented a code in my Navigation/left.phtml

The code is as follows

    <!-- subcategory code -->

    <?php

    $category = Mage::getSingleton('catalog/layer')->getCurrentCategory();
    if(!$category->getChildren()){
     //$parentcat_id = $category->getParentCategory()->getId();
     //$category = Mage::getSingleton('catalog/category')->load($parentcat_id);
     $category = $category->getParentCategory();
    }
    $categories = $category->getCollection()
            ->addAttributeToSelect(array('name', 'thumbnail'))
            ->addAttributeToFilter('is_active', 1)
            ->addIdFilter($category->getChildren());
     ?>
     <div class="block">

     <div class="block-title">
        <span><?php echo $category->getName() ?></span>

        </div>
        <div class="block-content clearfix">
    <ul class="subcategories">
        <?php foreach ($categories as $category): ?>
            <li>
                <a href="<?php echo $category->getUrl() ?>"><!--<img src="<?php echo Mage::getBaseUrl('media') . 'catalog' . DS . 'category' . DS . $category->getThumbnail() ?>" alt="<?php echo $this->htmlEscape($category->getName()) ?>" />-->
                    <span><?php echo $category->getName() ?>
                   <?php $collection = Mage::getModel('catalog/product')->getCollection()->addCategoryFilter($category);

    echo "(".count($collection).")"; ?></span>
                    </a>
            </li>
        <?php endforeach; ?>
    </ul></div>
    </div>
    <!-- subcategory code -->

    <!-- List all categories and their second level subcategories -->
    <div class="block block-list block-categories">
        <div id="block-categories" class="block-title active">
            <strong><span>Categories </span></strong>
        </div>

    <div id="leftnav" class="block-content" style="display:block">
        <?php $helper = $this->helper('catalog/category') ?>
        <?php $categories = $this->getStoreCategories() ?>
        <?php if (count($categories) > 0): ?>
            <ul id="leftnav-tree" class="level0">
                <?php foreach($categories as $category): ?>
                    <li class="level0<?php if ($this->isCategoryActive($category)): ?> active<?php endif; ?>">

                        <?php //if ($this->isCategoryActive($category)): ?>
                            <?php $subcategories = $category->getChildren() ?>
                            <?php if (count($subcategories) > 0): ?>
                                <ul id="leftnav-tree-<?php echo $category->getId() ?>" class="level1">
                                    <?php foreach($subcategories as $subcategory): ?>
                                        <li class="level1<?php if ($this->isCategoryActive($subcategory)): ?> active<?php endif; ?>">
                                            <a href="<?php echo $helper->getCategoryUrl($subcategory) ?>"><?php echo $this->escapeHtml(trim($subcategory->getName(), '- ')) ?></a>
                                             <?php $secondLevelSubcategories = $subcategory->getChildren() ?>
                                             <?php if (count($secondLevelSubcategories ) > 0): ?>
                                <ul id="leftnav-tree-<?php echo $subcategory->getId() ?>" class="level2">
                                    <?php foreach($secondLevelSubcategories as $secondLevelSubcategory ): ?>
                                        <li class="level2<?php if ($this->isCategoryActive($secondLevelSubcategory )): ?> active<?php endif; ?>">
                                            <a href="<?php echo $helper->getCategoryUrl($secondLevelSubcategory ) ?>"><?php echo $this->escapeHtml(trim($secondLevelSubcategory ->getName(), '- ')) ?></a>
                                        </li>
                                        <?php endforeach; ?>
                                </ul>
                                <script type="text/javascript">decorateList('leftnav-tree-<?php echo $category->getId() ?>', 'recursive')</script>
                            <?php endif; ?>
                                    <?php endforeach; ?>
                                </ul>
                                <script type="text/javascript">decorateList('leftnav-tree-<?php echo $category->getId() ?>', 'recursive')</script>
                            <?php endif; ?>
                        <?php //endif; ?>
                    </li>
                <?php endforeach; ?>
            </ul>
            <script type="text/javascript">decorateList('leftnav-tree', 'recursive')</script>
        <?php endif; ?>
    </div>
    </div>

But when i set Include in Navigation Menu to No it also disappears from here.

Is there any way I can hide from top menu and show in my side menu?
I want to show all categories in left navigation using above code and only few categories in the top navigation.

I had also tired using custom category attribute but cannot create an attribute value with yes or no option.
the script to create that attribute

            <?php
            $installer = $this;
            $installer->startSetup();
            $installer->addAttribute('catalog_category', 'topnav', array(
                'group'         => 'General Information',
                'type'     => 'int',
                'label'    => 'Top navigation',
                'input'    => 'boolean',
                'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
                'visible'           => true,
                'required'          => false,
                'user_defined'      => false,   
                'default' => '',
                'option' => 
              array (
                'values' => 
                array (
                  0 => 'Please select',
                  1 => 'Yes',
                  2 => 'No',
                ),
              ),
                'source' => 'eav/entity_attribute_source_boolean'
            )); 
            $installer->endSetup();
            ?> 

And then calling

  if (!$category->getTopnav()) {
         continue;
         }

In observer.php

Best Answer

You can achieve this with the help of static blocks.By fetching all the categories into static block and displaying them in left navigation. For getting categories into a static block follow the procedure described here.After completing that process call your static block with <reference name="left"> and later for hiding categories from top nav goto app/design/frontend/your_theme/default/template/page/html and open topmenu.phtml file and put this code in comments

<?php if($_menu): ?>
    <nav id="nav">
        <ol class="nav-primary">
            <?php echo $_menu ?>
        </ol>
    </nav>
<?php endif ?>
Related Topic