Wie erhalte ich die oberste übergeordnete Kategorie vom aktuellen Kategorieobjekt?


14

Wie kann ich die übergeordnete Kategorie der obersten Ebene (direkt nach der Standardkategorie) aus dem aktuellen Kategorieobjekt abrufen? Ich möchte, dass der Kategoriename und die Kategorie-URL dieser übergeordneten Kategorie in den Unterkategorien angezeigt werden.

  • Standardkategorie
    • Katze A
      • Katze B
        • Katze C

Wie kann ich den Cat ANamen und die URL von Cat Bund von Cat CObjekten erhalten?

Antworten:


22

$category->getPath()Gibt die IDs aller Kategorien vom Stamm des Baums zum aktuellen zurück, die durch einen Schrägstrich ( /) getrennt sind. Hier ein Beispiel: 1/2/56/124/543. Der erste ist die Wurzel der Wurzeln. Die zweite ist die Katalogwurzel (Standardkategorie). Der Rest von ihnen sind einfache Kategorien. Sie können also so etwas tun.

$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.
}

Jetzt können Sie den Namen und die URL wie folgt abrufen:

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

Vielen Dank, Marius! getId()Ich habe einen Tippfehler korrigiert. Es funktioniert perfekt.
MagExt

cool. Entschuldigung für den Tippfehler. und danke für die korrektur.
Marius

Hallo, kann mich jemand auf das offizielle Magento-Dokument für den Kategoriebaum verweisen?
MengT

@Marius, wenn ich den Pfad der Kategorie erhalte, sagt die gesamte Kategorie 1/2 / <jeweilige Kategorie-ID>. Meine Standard-Kategorie-ID ist 2. Was ist dann diese 1?
Schmetterling

1
@invissible du hast recht.
Marius

15

Versuche dies

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

Kopiere einfach diesen Code und füge ihn ein :)


Hallo. Vielen Dank für Ihre Antwort, aber Sie sind 5 Monate zu spät :)
MagExt

9
Willkommen im Magento Stack. Sie haben völlig Recht, eine alte Frage zu beantworten, wenn Sie eine gute Antwort haben, die noch nicht behandelt wurde. Die Antworten sind zum Wohle der Gemeinschaft und nicht nur zum Wohle des OP. Mach weiter! :)
McNab

Diese Antwort ist falsch, wenn Sie sich auf Stufe 3 und tiefer befinden, da sie den ersten Elternteil zurückgibt, während es sich bei der Frage um die erste handelt.
gnysek

Dies ist zwar keine vollständige Lösung, es kann jedoch eine Schleife ausgeführt werden, bis das gewünschte Niveau erreicht ist. Schob mich in die richtige Richtung.
Domino

4

Sie können getParentCategories () für die aktuelle Kategorie verwenden und dann array_pop aufrufen, um das letzte Element abzurufen. Mach es zweimal, um das vorletzte Element zu erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.