Я новичок в 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>
У кого-нибудь есть идеи? Пожалуйста?
Спасибо, Кайла
Пожалуйста, попробуйте этот код. Я думаю, что вы сделали этот код, но это очень полезно для тех, кто ищет этот код
<?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; ?>
Я не знаю, почему решение @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;
По какой-то причине вышеупомянутый ответ не сработал для меня. Я также использую 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">
вместо их перечисления. Но вы спросили, как перечислить.
Надеюсь, это поможет людям в будущем. Есть много других вопросов, связанных с переполнением стека.
Ну, это была боль в заднице. Я создал для него функцию, которая перечисляет все подкатегории и подкатегории категории, которую вы хотите отобразить.
<?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>