template temas para monster buy magento themes php

magento - temas - template monster



Magento: cómo saber si estás en una página de categoría o en una página de producto en un archivo.phtml(s) (4)

Aunque la respuesta de Alan funcionará, hay una opción más directa, y en realidad estaba en el camino correcto con su fragmento de código ... solo necesita inspeccionar el nombre del controlador en lugar del nombre del módulo:

<?php Mage::app()->getFrontController()->getRequest()->getControllerName(); ?>

Eso devolverá category o product basado en sus controladores siendo CategoryController.php y ProductController.php respectivamente.

Esto supone que no ha instalado ningún módulo de terceros que reescriba esos controladores con los suyos.

Estoy intentando programar en mis archivos .phtml una declaración if si el invitado se encuentra en una página de lista de categorías o en una página de productos.

Por ejemplo, este código:

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

Devuelve "catálogo" cada vez que estoy en una página que no sea una página de CMS.

¿Existe alguna manera de que pueda usar un método similar para saber si el usuario está buscando una categoría raíz, una subcategoría o una página de producto individual?

¡Cualquier ayuda sería muy apreciada!


Ha pasado un tiempo desde que trabajé en las páginas del catálogo frontend, pero pruébalo.

Las versiones actuales de Magento registran ciertas variables globales (no PHP globales, sino cosas globales para el sistema Magento) en ciertas páginas.

Llamando a lo siguiente

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

devolverá nulo si los objetos no se han configurado (es decir, está en una página sin una categoría o un producto) o devuelve una categoría y objetos de producto.

Si se devuelve un objeto de producto, se encuentra en una página de producto.

Si no se devuelve ningún objeto producto pero sí un objeto de categoría, estás en una página de categoría. Los objetos de categoría tienen un método para obtener el ID padre

$category->getParentId()

Una categoría sin un ID padre debe ser una categoría de nivel superior, las categorías con ID padre deben ser subcategorías.

Eso debería darle lo que necesita para identificar dónde está la solicitud actual.


Me temo que estás tratando de hacerlo de la manera incorrecta. Podría estar equivocado, porque no me has explicado qué es exactamente lo que quieres lograr, pero usaría el diseño xml para incluir tu bloque en una página de producto con un parámetro (digamos producto-página = "1") y de forma similar en una página de categoría (categoría-página = "1").

Luego podrá saber si se encuentra en una página de producto o página de categoría al examinar esos parámetros dentro de su bloque:

if($this->getProductPage()) { //this is a product page, do some stuff } elseif($this->getCategoryPage()) { //this is a category page, do some stuff }

Diferenciar entre páginas principales y subcategorías puede ser más difícil, lo primero que se viene a la mente es el análisis de las variables de solicitud, pero ciertamente no es el mejor enfoque.


No soy un gran admirador de comprobar si existe el registro actual_category, porque básicamente cualquier controlador podría hacer esto y no necesariamente significaría que es una categoría. Mi forma de hacerlo es un poco más robusta:

$fullActionName = Mage::app()->getFrontController()->getAction()->getFullActionName(); if ($fullActionName == ''catalog_category_view'') { ... //Category } elseif ($fullActionName == ''catalog_product_view'') { ... //Product }