0

I am using Magento CE 1.9.2.2 what I am trying to do is I have category structure like the below

- Party - Balloons - Bags - Streamers 

Now if you click on the category "party" on the left side Magento shows the "browse by" category/sub category list. However if I click on Balloons I want the same browser by block to be displayed so that even when you are on a sub category page you will be able to see the links to the other sub categories in the left side column in a browser by box.

Hope this is clear what I want to achieve because I am not able to get anything to be displayed on the sub categories? So what I have done is in Magento manage categories I went to the "balloons" category and changed Display Mode to static block and products. I then changed the drop down CMS Block and selected the block I made called Sub Category Listing.

Then in my Sub category listing block I added the below in code view {{block type="catalog/navigation" template="catalog/navigation/subcategory_listing.phtml"}}

I then opened ftp and created the subcategory_listing.phtml and added the below code

 $layer = Mage::getSingleton('catalog/layer'); $_category = $layer->getCurrentCategory(); $_categories = $_category->getCollection()->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description')) ->addAttributeToFilter('is_active', 1) ->addIdFilter($_category->getChildren()) ->setOrder('position', 'ASC') ->joinUrlRewrite(); ?> <div class="listing-type-list catalog-listing"> <ul id="subcats" class="clear"> <?php foreach ($_categories as $_category): ?> <?php if($_category->getIsActive()): ?> <?php Mage::log($_category->debug(), null, 'mylogfile.log'); ?> <li> <div class="subcat clearfix"> <a class="now-from-container" href="<?php echo $_category->getURL() ?>"></a> <div class="subcat-image"> <a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"> <img src="<?php echo $this->htmlEscape($_category->getImageUrl()) ?>" width="190" alt="<?php echo $this->htmlEscape($_category->getName()) ?>" /> </a> </div> <div class="subcat-title-container"> <h2><a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a></h2> </div> </div> </li> <?php endif; ?> <?php endforeach; ?> </ul> </div> 

1 Answer 1

1

In your code to get the children categories from current category, which looks like this :

<?php $layer = Mage::getSingleton('catalog/layer'); $_category = $layer->getCurrentCategory(); $_categories = $_category->getCollection()->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description')) ->addAttributeToFilter('is_active', 1) ->addIdFilter($_category->getChildren()) ->setOrder('position', 'ASC') ->joinUrlRewrite(); ?> 

Try with this code instead :

<?php $layer = Mage::getSingleton('catalog/layer'); $_category = $layer->getCurrentCategory(); $_categories = $_category->getCollection()->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description')) ->addAttributeToFilter('is_active', 1) ->addIdFilter($_category->getAllChildren(true)) ->setOrder('position', 'ASC') ->joinUrlRewrite(); ?> 

Difference is, your call to method getChildren returns a comma separated list of IDs, not an array, while the method addIdFilter expects an array to be passed. When you pass true to the method getAllChildren, it will return the list as an array.

4
  • Thank you Prateek, I tried the change you listed but that did not do anything? Commented Jan 3, 2016 at 2:50
  • @user1739740, check with var_dumo($_category), if it contains anything at all. Commented Jan 4, 2016 at 9:43
  • I did a var_dump($_category) as well as var_dump($_categories) and both do not display anything to the page. So not sure where to go from here? Commented Jan 5, 2016 at 2:43
  • Well, then either you are not on a category page or that category is not set as anchor in admin. Check both of these. Commented Jan 5, 2016 at 6:33

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.