Magento:Display current category and sub categories within current category on layered navigation

Today we will see how to “Display current category and sub categories within current category on layered navigation” , In Magento Suppose you have below categories structure

  • Category 1
    • Category 1a
    • Category 1b
    • Category 1c
      • Category 1c1
      • Category 1c2
  •  Category 2
    • Category 2a
    • Category 2b

Now when user id on Category 1c2 page, in layered left navigation it will display Shop By category strcutre including Category 1 and Category 2 and everything inside it.

If you want to filter your layered left navigation so that it only display the the structure of from Root parent category(Category 1 in our case) and all sub categories within this parent category. So in our example like if you wan to display left navigation like below(note category 2 is hidden)

  • Category 1a
  • Category 1b
  • Category 1c
    • Category 1c1
    • Category 1c2

Below is the code you can use to filter,

<?php $currentCategory = Mage::registry("current_category"); ?>

<?php $path = $currentCategory->getPath(); $ids = explode('/', $path); ?>

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

<?php $_categories = $_helper->getStoreCategories() ?>

<div class="block block-right-nav block-yt-layered-nav">

 <div class="block-layered-nav-inner">

 <div class="block-title">

<strong>

<span><?php echo $this->__('Categories'); ?></span>

</strong>

 </div>

 <div class="block-content clearfix">

<?php if (count($_categories) > 0): ?>

 <ul id="yt_sidenav" class="dropdow-nav">



 <?php foreach($_categories as $_category): ?>

 <?php if (in_array($_category->getId(),$ids)): ?>

<?php echo $this->drawItem($_category) ?>

<?php endif; ?>

 <?php endforeach ?>

 </ul>

<?php endif; ?>

 <script type="text/javascript">

 decorateList('yt_sidenav')

</script>

 </div>

 <?php echo $this->getChildHtml('topLeftLinks'); ?>

 </div>

</div>

Basically what we are doing here, that we are getting current category path(getPath())  and spiting it in to array by ‘/’ and before displaying category inside each loop we are comparing the current category index id is within the array, if so display category else don’t display

Hope this helps…Happy Coding!!!!

(Visited 53 times, 1 visits today)