Мадженто:Показать список подкатегорий
-
10-07-2019 - |
Вопрос
Я создаю магазин 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; ?>
Этот вопрос требует длинного ответа. Я укажу вам правильные места.
1) Лучшее решение - использовать бесплатное расширение. Я не пробовал это, но это будет соответствовать цели. Вам нужно будет сделать немного CSS, чтобы добиться правильного внешнего вида.
http://www.magentocommerce.com/extension/1562 / Magento-легкий каталог-изображения
Демонстрация: http://extension01.templates-master.com/gb/electronics.html а> р>
2) Я не доверяю модулям, поскольку их обновление может оказаться затруднительным, если поставщик решит прекратить его поддержку Я использовал информацию из следующей ветки форума для создания сайтов. Посмотрите ... Может быть, не прямо. Возможно, вам придется сделать несколько копий основных файлов в локальный каталог. http://www.magentocommerce.com/boards/viewthread/3770/ P30 / Надеюсь, это поможет вам:)
Я снял это небольшое видео о том, как создавать собственные блоки списков категорий с помощью 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