Прошло много времени с тех пор, как я имел дело со страницами каталога внешнего интерфейса, но попробуйте.
Текущие версии Magento регистрируют определенные глобальные переменные (не глобальные PHP, а глобальные для системы Magento) на определенных страницах.
Позвонив по следующему
$category = Mage::registry('current_category');
$product = Mage::registry('current_product');
$product = Mage::registry('product');
будет либо возвращать ноль, если объекты не были установлены (т. Е. Вы находитесь на странице без категории или продукта), либо возвращать объекты категории и продукта.
Если объект продукта возвращается, вы находитесь на странице продукта.
Если объект продукта не возвращается, но объект категории есть, значит, вы находитесь на странице категории. У объектов категории есть метод получения родительского идентификатора
$category->getParentId()
Категория без родительского идентификатора должна быть категорией верхнего уровня, категории с родительскими идентификаторами должны быть подкатегориями.
Это должно дать вам то, что вам нужно, чтобы определить, где находится текущий запрос.
ОБНОВЛЕНИЕ: Возвращаясь к этому почти десятилетие спустя - скорее всего, не будет полагаться только на содержимое реестра, чтобы определить страницу, на которой я нахожусь. Вместо этого я бы использовал полное имя действия в сочетании с поиском вышеуказанных объектов.