Вопрос

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

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

Был ли у кого-нибудь опыт сделать это с Magento?

Это было полезно?

Решение

Если вам удобно редактировать свою тему, этот фрагмент кода принесет вам список всех подкатегорий текущей категории (из сеанса, так что это должно работать в любом месте вашей темы). Обычно я использую это в 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>

Другие советы

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

<?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; ?>

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

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

Спасибо!

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

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

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

        $_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 "</pre>";
?>

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

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

КАТЕГОРИИ - подкатегория 1 КАТЕГОРИЯ 2 - подкатегория 1 - подкатегория 1

BR Cveto

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top