Скрыть категории, в которых нет товаров magento
-
22-08-2019 - |
Вопрос
У меня есть много сайтов, которые используют одну и ту же корневую категорию Основного сайта.Каждый добавленный товар добавляется на сайт, на который он был добавлен (wow.), а также на Основной сайт.Однако я бы хотел, чтобы категории для каждого сайта отображались только в том случае, если на этом сайте есть товары.
Если у меня есть:
Category1
Category2
Category3
Но у Site1 есть продукты только в Category1 и Category2, тогда как у Site2 и Site3 есть продукты в Category2 и Category3;Я хочу, чтобы Category1 / 2 отображалась только на Site1, и только Category2 / 3 отображалась только на Site2 и Site3.
Однако, поскольку все товары на Сайтах1/2 /3 также добавляются на Основной сайт;на главном сайте будет указана категория 1/2/3.
Никакие товары не добавляются непосредственно на Основной сайт.Он просто служит хранилищем для других сайтов.
Теперь, если нет действительно простого способа включить это (в чем я уверен), было бы так же просто, как написать мою собственную тему, в которой перечислены категории, в которых есть товары только на сайте, на котором отображается шаблон?
Я не новичок в технологиях, которые использует Magento;так что написание пользовательского кода не является проблемой.Я бы, однако, не хотел так сильно редактировать его, чтобы в будущем было проще обновлять мою кодовую базу с более поздними версиями Magento.
Спасибо,
-нельсон
Решение
Что ж, что вы можете сделать, так это создать свой собственный помощник с коллекцией (через модель), а затем отфильтровать коллекцию на основе количества продуктов.
Только черновик, но я опубликовал некоторый код в другом вопросе, связанном с magento: Товары Magento по категориям.Вы можете видеть, как и когда он добавляет количество продуктов, я бы отфильтровал еще раз, когда это будет сделано.
Я не думаю, что это чрезвычайно "здорово" с точки зрения производительности, поэтому вместо того, чтобы использовать их классы моделей, вы мог бы напишите свой собственный, расширив его и добавив фильтры по умолчанию или сократив непосредственно базу данных.
Пока вы остаетесь в своем скине / шаблоне, серьезных проблем с обновлением не возникает.
Другие советы
это простое решение для скрытия категорий , которые могут вам помочь .
Исходное содержимое файла top.phtml должно выглядеть следующим образом.
<?php $_menu = $this->renderCategoriesMenuHtml(0,'level-top') ?>
<?php if($_menu): ?>
<div>
<ul id="nav">
<?php echo $_menu ?>
</ul>
</div>
<?php endif ?>
Замените приведенный выше код на этот код ниже.
<?php $_menu = ''?>
<?php $excludeCat = array(); ?>
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php if($_category->getProductCount() <=0) {
$excludeCat[] = $_category->getId();
}
?>
<?php $_menu .= $this->drawItem($_category) ?>
<?php endforeach ?>
<?php if ($_menu): ?>
<div>
<ul id="nav">
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php if (!in_array($_category->getId(), $excludeCat)) : ?> <?php echo $this->drawItem($_category) ?>
<?php endif; ?>
<?php endforeach ?>
</ul>
</div>
<?php endif; ?>