Magento: Показать список подкатегорий - PullRequest
4 голосов
/ 30 ноября 2009

Я создаю магазин Magento и хочу иметь возможность отображать список категорий и иметь ссылку на каждую категорию на своей странице.

У меня есть категория «Бренды» с идентификатором 42, и я хочу отобразить список подкатегорий и убедиться, что каждая из них ссылается на указанный URL-ключ в CMS.

Кто-нибудь имел опыт работы с Magento?

Ответы [ 7 ]

17 голосов
/ 13 декабря 2009

Если вам удобно редактировать тему, этот фрагмент кода принесет вам список всех подкатегорий текущей категории (из сеанса, так что это должно работать в любом месте вашей темы). Я обычно использую это в app / design / frontend / default / theme_name / template / catalog / category / view.phtml

<?php
$_category  = $this->getCurrentCategory(); 
$collection = Mage::getModel('catalog/category')->getCategories($_category->entity_id);
$helper     = Mage::helper('catalog/category');
?>

<ul>
    <?php foreach ($collection as $cat):?>
            <?php if($_category->getIsActive()):?>
                <?php 
                     $cur_category = Mage::getModel('catalog/category')->load($cat->getId());
                     $_img = $cur_category->getImageUrl();  
                ?>
                <li>
                    <a href="<?php echo $helper->getCategoryUrl($cat);?>">
                         <img src="<?php echo $_img?>" title="<?php echo $cat->getName();?>"/>
                         <cite><?php echo $cat->getName();?></cite>
                    </a>
                </li>
            <?php endif?>
    <?php endforeach;?>
</ul>
4 голосов
/ 08 ноября 2011

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

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
    <?php foreach($_categories as $_category): ?>
        <li>
            <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
                <?php echo $_category->getName() ?>
            </a>
            <?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
            <?php $_subcategories = $_category->getChildrenCategories() ?>
            <?php if (count($_subcategories) > 0): ?>
                <ul>
                    <?php foreach($_subcategories as $_subcategory): ?>
                        <li>
                            <a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
                                <?php echo $_subcategory->getName() ?>
                            </a>
                        </li>
                    <?php endforeach; ?>
                </ul>
            <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

Для отображения категорий верхнего уровня и подкатегорий текущих категорий, которые вы можете сделать как ...

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
    <?php foreach($_categories as $_category): ?>
        <li>
            <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
                <?php echo $_category->getName() ?>
            </a>
            <?php if ($currentCategory && $currentCategory->getId() == $_category->getId()): ?>
                <?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
                <?php $_subcategories = $_category->getChildrenCategories() ?>
                <?php if (count($_subcategories) > 0): ?>
                    <ul>
                        <?php foreach($_subcategories as $_subcategory): ?>
                            <li>
                                <a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
                                    <?php echo $_subcategory->getName() ?>
                                </a>
                            </li>
                        <?php endforeach; ?>
                    </ul>
                <?php endif; ?>
            <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>
2 голосов
/ 30 ноября 2009

Этот вопрос требует длинного ответа. Я укажу вам правильные места.

1) Лучшее решение - использовать бесплатное расширение. Я не пробовал это, но это будет соответствовать цели. Вам нужно будет сделать немного CSS, чтобы добиться правильного внешнего вида.

http://www.magentocommerce.com/extension/1562/magento-easy-catalog-images Демонстрация: http://extension01.templates -master.com / gb / electronics.html

2) Я не доверяю модулям, поскольку их обновление может оказаться затруднительным, если поставщик решит прекратить его поддержку. Я использовал информацию из следующей ветки форума для создания сайтов. Посмотрите ... Может быть, не прямо. Возможно, вам придется сделать несколько копий основных файлов в локальный каталог.

http://www.magentocommerce.com/boards/viewthread/3770/P30/

Надеюсь, это поможет вам:)

1 голос
/ 02 ноября 2012

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

<code>        $_helper = Mage::helper('catalog/category');
        $_category = Mage::getModel('catalog/category')->load(5);
        $_subcategories = $_category->getChildrenCategories();

        if (count($_subcategories) <= 0) { return; }

        $count = 0;

        foreach($_subcategories as $_category) {     
                                                      $category = Mage::getModel('catalog/category')->load($_category->getId());

                                                      $ret->{"object_".$count} ->url  = $_helper->getCategoryUrl($_category);
                                                      $ret->{"object_".$count} ->name = $_category->getName();
                                                      $ret->{"object_".$count} ->id =  $_category->getId(); 
                                                      $ret->{"object_".$count} ->image =   $category->getImageUrl();
                                                      $count++;
                                                   } 

        return $ret;                                          

        } 


$list = list_subcategories(5);

echo "<pre>"; print_r($list); echo "
"; ?>
1 голос
/ 09 июня 2010

просмотрев все решения на сайте magento, я обнаружил, что вышеприведенное решение wookiehangover сработало, и его реализация заняла около 8 секунд.

создает UL, который вы можете стилизовать. Благодарю.

1 голос
/ 01 июня 2010

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

Блок списка пользовательских категорий Magento

Спасибо!

0 голосов
/ 06 июня 2014

Как насчет перечисления только категорий, принадлежащих текущему элементу. Не все категории на странице.

Но в виде дерева.

КАТЕГОРИИ - sub cat 1 КАТЕГОРИЯ 2 - sub sub 1 - sub sub cat 1

БР Цвето

...