Bagaimana cara mendapatkan Kategori induk teratas dari objek kategori saat ini?

14

Bagaimana saya bisa mendapatkan kategori induk level atas (tepat setelah Kategori Default) dari objek kategori saat ini? Saya ingin Nama Kategori dan URL Kategori dari kategori induk ditampilkan di subkategori.

  • Kategori Default
    • Kucing A
      • Kucing B
        • Kucing C

Bagaimana saya bisa mendapatkan Cat ANama dan URL Cat Bdan Cat Cobjek?

MagExt
sumber

Jawaban:

22

$category->getPath()akan mengembalikan id semua kategori dari root pohon ke root saat ini yang dipisahkan oleh slash ( /). Berikut adalah contoh: 1/2/56/124/543. Yang pertama adalah 'root of root'. Yang kedua adalah root katalog (kategori default). Sisanya adalah kategori sederhana. Jadi Anda bisa melakukan hal seperti ini.

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

Sekarang Anda bisa mendapatkan nama dan url seperti ini:

if ($topParent){
    $name = $topParent->getName();
    $url = $topParent->getUrl();
}
Marius
sumber
Marius terima kasih! Ada kesalahan ketik di getId()saya memperbaikinya. Ini bekerja dengan sempurna.
MagExt
keren. maaf tentang kesalahan ketik. dan terima kasih atas koreksinya.
Marius
Hai, ada yang bisa merujuk saya ke dokumen magento resmi untuk pohon kategori?
MengT
@Marius ketika saya mendapatkan jalur kategori semua kategori mengatakan 1/2 / <Masing-masing Kategori ID> ID kategori default saya adalah 2. Lalu apa ini 1?
Butterfly
1
@mungkin Anda benar.
Marius
15

Coba ini

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

Cukup salin dan tempel kode ini :)

Kanagan
sumber
Hai. Terima kasih atas jawaban Anda, tetapi Anda terlambat 5 bulan :)
MagExt
9
Selamat datang di tumpukan Magento. Anda benar untuk menjawab pertanyaan lama jika Anda memiliki jawaban yang bagus yang belum pernah dibahas. Jawabannya adalah untuk kebaikan komunitas dan bukan hanya untuk kepentingan OP. Teruskan! :)
McNab
Jawaban ini akan salah jika Anda berada di level 3 dan lebih dalam, karena mengembalikan Induk pertama, sedangkan pertanyaannya adalah tentang yang teratas.
gnysek
Meskipun ini bukan solusi yang lengkap, orang bisa mengulang sampai level yang diinginkan tercapai. Mendorong saya ke arah yang benar.
Domino
4

Anda bisa menggunakan getParentCategories () pada kategori saat ini dan kemudian memanggil array_pop untuk mendapatkan elemen terakhir. Lakukan dua kali untuk mendapatkan elemen terakhir kedua.

Tobias
sumber