2011-05-04 7 views
9

Adını almak için bir kategori nesnenin örneğini mümkün oldum, ama ben herMagento getUrl katalog/kategori ile çalışmıyor?

<?php 
$children = Mage::getModel('catalog/category')->getCategories(3); 
foreach ($children as $category): 
      echo '<li><a href="' . $category->getUrl() . '">' . $category->getName() . '</a></li>'; 
     endforeach; 
?> 

kodunuz getUrl o kategori listeleme sayfasına bir URL döndürmüyordur yöntemi, ya da bir şey kullandığınızda

<li><a href="">name of sub-cat</a></li>` 

HTML çıktısında yukarıdaki sonuçlar herkes bir catalog/category nesneden bir kategori sayfasının URL'sini nasıl alabilirim biliyor mu?

cevap

16

$children = Mage::getModel('catalog/category')->load(3)->getChildrenCategories(); 
+0

Bunu yaptı! Çok teşekkürler Gordon! – Kayla

3

Her kategoriyi foreach döngüsünde yükleyebilir ve ardından kategori URL'sini alabilirsiniz.

Bu, daha az sayıda kategori için işe yarayabilir. Ancak, çok sayıda kategoriniz varsa bu daha fazla zaman alabilir.

+0

teşekkür ederiz ile

$children = Mage::getModel('catalog/category')->getCategories(3); 

, bu kod da iyi çalışır değiştirin! – Kayla

6

Sorun, getCategories()'un normalde, bir koleksiyon kategorisi yerine Varien_Data_Tree_Node_Collection değerini döndürür. Bunun yerine, bunu yapabilirsiniz:

$children = Mage::getModel('catalog/category')->getCategories(3, 0, false, true); 

dördüncü parametre true sen muhtemelen bekliyorduk bir Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection döndürülür anlamına geçerek $asCollection olduğunu. Gerisi şimdi çalışmalı.

+0

Yardımlarınız için teşekkür ederiz! Ancak, sadece aşağıdaki iki yanıtın üstlendiği birinci seviye çocuk kategorilerini göstermeyi düşünüyordum. Yine, yardımlarınız için çok teşekkür ederim! – Kayla

+0

Gelecek okuyucular için ikinci parametre ile seviyelerini kontrol edebilirsiniz; "0" yerine, sadece birinci seviye için '1 ', ilk ve ikinci için' 2' yerine koyun. Gordon'un cevabının aynı şeyi yapması ve aynı zamanda da yenir olması doğrudur. – clockworkgeek

+0

Merhaba Clockworkgeek, Bir if ifadesinin nasıl ekleneceğini söyler misiniz: Eğer catoegories çocuk varsa, çocuk kategorisine bağlantı verin, eğer değilse, normal kategori bağlantısını bağlayın. (Mobil site için) – Geoff