2011-08-26 4 views
0

だから私は、コンセプトの証明として/[my-theme-name]/template/catalog/navigation/left.phtmlに次のコードを持っている:再帰関数を使用してMagentoのからカテゴリのネストされたリストをプリントアウト

<?php 
$Mage_Catalog_Block_Navigation = new Mage_Catalog_Block_Navigation(); 
$categories = $Mage_Catalog_Block_Navigation->getStoreCategories(); 

function render_flat_nav($categories) { 
    $html = '<ul>'; 
    foreach($categories as $category) { 
     $html .= '<li><a href="' . $category->getCategoryUrl($cat) . '">' . 
        $category->getName() . "</a>\n"; 
     if($category->hasChildren()) { 
      $children = $category->getChildren(); 
      $html .= render_flat_nav($children); 
     } 
     $html .= '</li>'; 
    } 
    return $html . '</ul>'; 
} 
echo render_flat_nav($categories); ?> 

レベル0とレベル1カテゴリには効果的ですが、より深くネストされたカテゴリは決して印刷されません。

したがって$category->getChildren()は私が期待しているものを返すことはできません。私の再帰関数で動作するように呼び出す方法はありますか?

+0

'$ category-> getChildren()'は何を返しますか? – xdazz

+0

クラスのコレクションを返しますが、 'getStoreCategories()によって返されるコレクションとは何らかの形で異なると仮定しています。 – Treffynnon

+0

カテゴリの子を返しませんか?私はマゼンタを知らない、文書をチェックしようとする。 – xdazz

答えて

1

私はこの問題への答えを発見したが、それは次善の可能性:上記に

<?php 
$Mage_Catalog_Block_Navigation = new Mage_Catalog_Block_Navigation(); 
$categories = $Mage_Catalog_Block_Navigation->getStoreCategories(); 

function render_flat_nav($categories) { 
    $html = '<ul>'; 
    foreach($categories as $category) { 
     $html .= '<li><a href="' . $category->getCategoryUrl($cat) . '">' . 
        $category->getName() . "</a>\n"; 
     if($category->hasChildren()) { 
      $children = Mage::getModel('catalog/category')->getCategories($category->entity_id); 
      $html .= render_flat_nav($children); 
      } 
     $html .= '</li>'; 
    } 
    return $html . '</ul>'; 
} 
echo render_flat_nav($categories); ?> 
0
$_category = Mage::getModel('catalog/category')->load(257);  
     $_categories = $_category 
        ->getCollection() 
        ->addAttributeToSelect(array('name', 'image', 'description')) 
        ->addIdFilter($_category->getChildren()); 

function render_flat_nav($categories) { 
    $html = '<ul>'; 
    foreach($categories as $category) { 
     $html .= '<li><a href="' . $category->getCategoryUrl($cat) . '">' . 
        $category->getName() . "</a>\n"; 
     if($category->hasChildren()) { 
      $children = Mage::getModel('catalog/category')->getCategories($category->entity_id); 
      $html .= render_flat_nav($children); 
      } 
     $html .= '</li>'; 
    } 
    return $html . '</ul>'; 
} 
echo render_flat_nav($_categories); 

おかげで私は、これは、特定のカテゴリIDのために働くことを得ることをどうにかしてこの作品フラットカテゴリも同様です。

関連する問題