Magento - перечислить подкатегории определенной родительской категории в виде ссылок - PullRequest
2 голосов
/ 05 мая 2011

Я новичок в php и застрял при попытке вызвать подкатегории только одной родительской категории в виде ссылок

Я дошел до этого, и он вызывает getName, но getUrl () вообще не возвращает ни одного URL ....

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

Выходной код просто <li><a href="">name of sub-cat</a></li>

У кого-нибудь есть идеи? Пожалуйста?

Спасибо, Кайла

Ответы [ 4 ]

6 голосов
/ 23 сентября 2011

Пожалуйста, попробуйте этот код. Я думаю, что вы сделали этот код, но это очень полезно для тех, кто ищет этот код

<?php
    $children = Mage::getModel('catalog/category')->getCategories(3);
    foreach ($children as $category):
        $category = Mage::getModel('catalog/category')->load($category->getId());
        echo '<li><a href="' . $category->getUrl() . '">' . $category->getName() . '</a></li>';
    endforeach;
?>
1 голос
/ 08 января 2015

Я не знаю, почему решение @Dhanapal не работает для меня, поэтому я использовал:

$categories = Mage::getModel('catalog/category')->load('3')->getChildrenCategories();
foreach ($children as $category):
    $category = Mage::getModel('catalog/category')->load($category->getId());
    echo '<li><a href="' . $category->getUrl() . '">' . $category->getName() . '</a></li>';
endforeach;
0 голосов
/ 22 апреля 2015

Ну, это была боль в заднице.Я сделал для него функцию, которая перечисляет все подкатегории и подкатегории категории, которую вы хотите отобразить.

    <?PHP

//get the children of the current category
function getChildrenInterStore($id) {
    $returnstring = '';
    $subCats = Mage::getModel('catalog/category')->load($id)->getChildren();
    //get sub category ids
    $subCatIds = explode(',',$subCats);
    if (count($subCatIds) > 0): 
        foreach($subCatIds as $subCatId): 
            $subCat = Mage::getModel('catalog/category')->load($subCatId); 
            if($subCat->getIsActive()): 
                $returnstring .= '
                <li class="other-toggle sm_megamenu_lv1 sm_megamenu_drop parent">
                    <a class="sm_megamenu_head sm_megamenu_drop" href="'.$subCat->getUrl().'">
                        <span class="sm_megamenu_icon">
                        <span class="sm_megamenu_title">'.$subCat->getName().'</span>
                    </span>
                    </a>
                </li>';
                $returnstring .= getChildrenInterStore($subCatId);  
            endif; 
        endforeach;
    endif;
    return $returnstring; 
}
?>

<div class="mega-left-title">
    <strong>Categorieen</strong>
</div>

<div class="css_effect sm_megamenu_wrapper_vertical_menu sambar">
    <div class="sambar-inner">
        <ul class="sm-megamenu-hover sm_megamenu_menu sm_megamenu_menu_black">
            <?PHP echo getChildrenInterStore('17'); ?>
        </ul>
    </div>  
</div>
0 голосов
/ 23 апреля 2013

Почему-то вышеупомянутый ответ не работал для меня. Я также использую Magento 1.7.x.

Я нашел Magento отображает описание подкатегорий в категории list.phtml , чтобы быть полезным.

Я пытаюсь сделать то же самое, что и вы, поэтому я скорректировал приведенный выше ответ с

<?php $children = explode( ",", $this->getCurrentCategory()->getChildren() ); ?>
<div class="category-products">
    <ul class="products-grid">
        <?php foreach( $children as $child ): ?>
            <?php $_child = Mage::getModel( 'catalog/category' )->load( $child ); ?>
            <li class="item"><?php echo $_child->getDescription(); ?></li>
        <?php endforeach; ?>
    </ul>
</div>

до:

<?php $children = explode( ",", $this->getCurrentCategory()->getChildren() ); ?>
<div class="category-products">
    <ul class="products-list">
        <?php foreach( $children as $child ): ?>
            <?php $_child = Mage::getModel( 'catalog/category' )->load( $child ); ?>
            <li class="item"><a href="<?php echo $_child->getUrl() ?>"> <?php echo     $_child->getName() ?> </a></li>
        <?php endforeach; ?>
    </ul>
</div>

Как и в предыдущем ответе, вы можете изменить класс div на

<div class="products-grid">

вместо перечисления их. Но вы спросили, как перечислить.

Я надеюсь, что это поможет людям в будущем. Есть множество других вопросов, связанных с переполнением стека.

...