Geçerli kategori nesnesinden en üst üst Kategori nasıl alınır?


14

Geçerli kategori nesnesinden en üst düzey üst kategoriyi (Varsayılan Kategoriden hemen sonra) nasıl alabilirim? Bu ana kategorinin Kategori Adı ve Kategori URL'sinin alt kategorilerde gösterilmesini istiyorum.

  • Varsayılan Kategori
    • Kedi A
      • Kedi B
        • Kedi C

Adlarını Cat Ave URL'sini Cat Bve Cat Cnesnelerini nasıl alabilirim ?

Yanıtlar:


22

$category->getPath()tüm kategorilerin kimliklerini ağaç kökünden, eğik çizgi ( /) ile ayrılmış geçerli kategoriye döndürür . İşte bir örnek: 1/2/56/124/543. Birincisi 'köklerin kökü'. İkincisi katalog köküdür (varsayılan kategori). Geri kalanı basit kategoriler. Böylece böyle bir şey yapabilirsiniz.

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

Şimdi adı ve url'yi şöyle alabilirsiniz:

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

Teşekkürler Marius! Düzelttiğim bir yazım hatası getId()vardı. Mükemmel çalışıyor.
MagExt

güzel. yazım hatası için üzgünüm. ve düzeltme için teşekkürler.
Marius

Merhaba, kimse beni kategori ağacı için resmi magento belgesine yönlendirebilir mi?
MengT

@Marius kategorinin yolunu aldığımda tüm kategorilerin 1/2 / <Saygıdeğer Kategori Kimliği> Varsayılan kategori kimliğim 2 olduğunu söylüyor. O zaman bu 1 nedir?
Kelebek

1
@invissible haklısın.
Marius

15

Bunu dene

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

Bu kodu kopyalayıp yapıştırmanız yeterlidir :)


Selam. Cevabınız için teşekkürler, ancak 5 ay geç
kaldınız

9
Magento Stack'e hoş geldiniz. Henüz ele alınmamış iyi bir cevabınız varsa eski bir soruyu cevaplamakta oldukça haklısınız. Cevaplar sadece OP'nin yararına değil, toplumun iyiliği içindir. Aynen böyle devam! :)
McNab

Bu soru, birinci Ebeveyn'e geri döndüğü için 3. seviyede ve daha derinde olursanız, soru en üstteki soru hakkında ise yanlış olacaktır.
gnysek

Bu tam bir çözüm olmasa da, istenen seviyeye ulaşılana kadar döngü yapılabilir. Beni doğru yöne itti.
Domino

4

Geçerli kategoride getParentCategories () öğesini kullanabilir ve ardından son öğeyi almak için array_pop öğesini çağırabilirsiniz. İkinci son elemanı almak için iki kez yapın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.