¿Cómo obtener la categoría principal superior del objeto de categoría actual?


14

¿Cómo puedo obtener la categoría principal de nivel superior (justo después de la Categoría predeterminada) del objeto de categoría actual? Quiero que el Nombre de categoría y la URL de categoría de esa categoría principal se muestren en las subcategorías.

  • Categoría predeterminada
    • Gato a
      • Gato B
        • Gato c

¿Cómo puedo ingresar Cat Ael nombre y la URL Cat By los Cat Cobjetos?

Respuestas:


22

$category->getPath()devolverá los identificadores de todas las categorías desde la raíz del árbol hasta la actual separada por una barra inclinada ( /). He aquí un ejemplo: 1/2/56/124/543. El primero es la "raíz de las raíces". El segundo es la raíz del catálogo (categoría predeterminada). El resto de ellos son categorías simples. Entonces puedes hacer algo como esto.

$path = $category->getPath();
$ids = explode('/', $path);
if (isset($ids[2])){
    $topParent = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($ids[2]);
}
else{
    $topParent = null;//it means you are in one catalog root.
}

Ahora puede obtener el nombre y la URL de esta manera:

if ($topParent){
    $name = $topParent->getName();
    $url = $topParent->getUrl();
}

Gracias marius! Había un error tipográfico en getId()lo corregí. Funciona perfectamente
MagExt

frio. Perdón por el error tipográfico. y gracias por la corrección
Marius

Hola, ¿alguien puede referirme al documento oficial de magento para el árbol de categorías?
MengT

@Marius cuando obtengo la ruta de la categoría, toda la categoría dice 1/2 / <ID de categoría respectiva> Mi ID de categoría predeterminada es 2. Entonces, ¿qué es este 1?
Mariposa

1
@invisible tienes razón.
Marius

15

Prueba esto

$level = $this->getCurrentCategory()->getParentCategory()->getLevel();
if($level > 1){                 
    echo $this->getCurrentCategory()->getParentCategory()->getName();
    }
    else{
    echo $this->escapeHtml($_category->getName());
    }

Simplemente copie y pegue este código :)


Hola. Gracias por tu respuesta, pero llegas 5 meses tarde :)
MagExt

99
Bienvenido a la pila de Magento. Tiene toda la razón al responder una vieja pregunta si tiene una buena respuesta que aún no se ha cubierto. Las respuestas son para el bien de la comunidad y no solo para el beneficio del OP. ¡Seguid así! :)
McNab

Esta respuesta será incorrecta si estás en el nivel 3 y más profundo, ya que devuelve el primer padre, mientras que la pregunta era sobre la primera.
gnysek

Si bien esta no es una solución completa, se podría repetir hasta alcanzar el nivel deseado. Me empujó en la dirección correcta.
Domino

4

Puede usar getParentCategories () en la categoría actual y luego llamar a array_pop para obtener el último elemento. Hazlo dos veces para obtener el segundo último elemento.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.