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?

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 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 :)


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.