Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Magento: How to tell if you're on a category page, or product page in .phtml file(s)

Tags:

I am trying to program into my .phtml files an if statement if the guest is on a category list page, or on a product page.

For example this code:

<?= Mage::app()->getFrontController()->getRequest()->getRouteName(); ?> 

Returns "catalog" whenever l'm on a page other than a CMS page.

Is there a way l can use a similar method to know if the user is looking at a root category, sub category or an individual product page?

Any help would be greatly appreciated!

like image 247
Jeff Avatar asked Aug 17 '10 15:08

Jeff


1 Answers

It's been a while since I've dealt with frontend catalog pages, but give this a try.

Current versions of Magento register certain global variables (not PHP globals, but things global to the Magento system) on certain pages.

Calling the following

$category = Mage::registry('current_category');          $product  = Mage::registry('current_product'); $product  = Mage::registry('product'); 

will either return null if the objects haven't been set (i.e. you're on a page without a category or a product), or return category and product objects.

If a product object is returned you're on a product page.

If no product object is returned but a category object is, you're on a category page. Category objects have a method to getting the parent id

$category->getParentId() 

A category without a parent id should be a top level category, categories with parent ids should be sub-categories.

That should give you what you need to identify where the current request is.

UPDATE: Coming back to this almost a decade later -- I likely would not rely on the contents of the registry alone to determine the page I'm on. Instead I'd use the full action name in combination with looking for the above the objects.

like image 108
Alan Storm Avatar answered Nov 21 '22 12:11

Alan Storm