Identificar la Categoría

Esta publicación no es una clase en categorías, pero voy a tomar algunas sugerencias para que no cree códigos innecesarios de frontend, rehaciendo funciones nativas que el sistema ya ofrece.

Así que es muy importante que conozca bien el sistema antes de comenzar a crear módulos y funciones que ya existen.

Configuración de backend

Cuando se accede a una categoría, hay docenas de información que se puede configurar, excluyendo así la necesidad de crear códigos para comprobar (si la categoría X lo hace, si la categoría Y lo modifica).

Cosas que puede hacer backend:

- Eliminar la categoría del menú de navegación, pero mantenerse activo en el sistema;
- Dejar cada categoría un color (cambiando el diseño);
- Incluir bloques personalizados (como banners);
- Cambiar el orden de visualización de los productos en el listado;
- Añadir (o eliminar) bloques dinámicos (como cart o newsletter) de la plantilla;
- Añadir una imagen a la categoría (normal y miniatura);
- Personalizar SEO indidivually (por categoría);

Por supuesto, puedes hacer otras cosas también, pero estas son algunas de las que puedes configurar sin tener que insertar una sola línea de código en la plantilla.

Modificación de otros elementos

Supongamos que desea modificar un elemento muy específico de la página al acceder a una categoría en particular. (es difícil establecer un buen ejemplo, ya que casi todo puede ser hecho por el backend).

Al acceder a una categoría, el sistema registra en la inicialización de esta categoría alguna información, como se puede ver en:

app > code > core > Mage > Catalog > controllers > CategoryController.php

Dentro del método _initCatagory() el código que registra la variable tiene información sobre la categoría:

Mage::register('current_category', $category);

A continuación, en su plantilla puede recuperar esta información con el código:

Mage::registry('current_category')->getName();

Este código puede ser útil cuando necesite coincidir con varias condiciones al mismo tiempo, por ejemplo: si la categoría es X, y el carro está con productos Y, y el cliente es de la categoría W grupo, entonces la página debe tener Z.

Otra información que puede obtener del registro:

- getDescription();
- getName();
- getUrlPath();
...conté 33 atributos disponibles...

En las páginas que no son de categoría, este código no funciona (return null).

¿Y cuando no tienes un registro?

Pero no todas las páginas tienen un registro al principio de la clase. Entonces, ¿cómo podemos recuperar la categoría de productos en la lista de la página principal?

Vamos a ver un ejemplo, así que abra el archivo phtml responsable de cargar su ficha de producto – si no sabe qué archivo está usando, lea la publicación: Depurar en Frontend.

Si no sabe cómo listar los productos en la página de inicio, lea la publicación: Destacados Productos en la página de inicio. En este ejemplo usaré el archivo new.phtml que se encuentra en:

app > design > frontend > base > default > template > catalog > product > new.phtml

Recuerde no cambiar archivos en base/default, siempre haga una copia a default/default o su template/tema personalizado.

En este caso usaremos la asociación entre productos y categorías (que es N a N). Y mientras el código se ejecuta producto por producto para mostrar en la pantalla, vamos a tomar para recuperar la categoría de cada producto en la lista.

/* Carga todas las categorías a las que pertenece este producto */
$cats = Mage::getModel('catalog/product')->load($_product->getId())->getCategoryIds();
/* Carga el nombre de la categoría introduciendo la categoría q id fue cargado por el producto */
echo Mage::getModel('catalog/category')->load($cats[1])->getName();

Sólo tiene que añadir este código php dentro de la foreach, justo debajo del nombre del producto y verá el resultado.

Ejemplo

Así que con el código anterior tiene un punto de partida para muchas variaciones, puede reproducir el nombre de la categoría en una variable para hacer comparaciones y tomar decisiones de presentación según la categoría.

Un producto puede asociarse a varias categorías, por lo que getCategoryIds() devuelve un array de objetos y depende de usted decidir qué categoría desea Desea cargar.

¡Éxito!

Hasta que surja la oportunidad de mudarme a España, sigo ayudando desde la distancia.

Vídeo de la semana