У меня много сайтов, использующих ту же корневую категорию, что и главный сайт. Каждый добавленный продукт добавляется на сайт, на который он был добавлен (вау.), А также на главный сайт. Однако я бы хотел, чтобы категории для каждого сайта отображались только в том случае, если на этом сайте есть продукты.
Если бы у меня был:
Category1
Category2
Category3
Но Site1 имеет продукты только в Category1 и Category2, тогда как Site2 и Site3 имеют продукты в Category2 и Category3; Я хочу, чтобы только Категория 1/2 отображалась на Site1 и только Категория 2/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; ?>