Скрыть категории, в которых нет товаров magento - PullRequest
3 голосов
/ 17 декабря 2008

У меня много сайтов, которые используют одну корневую категорию основного сайта. Каждый добавленный продукт добавляется на сайт, на который он был добавлен (вау), а также на Основной сайт. Однако я хотел бы, чтобы категории для каждого сайта отображались только при наличии товаров на этом сайте.

Если у меня есть:

Category1
Category2
Category3

Но у Site1 есть товары только в категориях 1 и 2, тогда как у Site2 и Site3 есть товары в категориях 2 и 3; Я хочу, чтобы категория 1/2 отображалась на сайте 1, а категория 2/3 - только на сайте 2 и сайте 3.

Однако, поскольку все продукты из Сайта 1/2/3 также добавляются на Главный Сайт; Основной сайт будет список категорий 1/2/3.

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

Теперь, если нет действительно простого способа включить это (как я уверен), было бы так же просто, как написать мою собственную тему, в которой перечислены категории, в которых есть только продукты на сайте, на котором отображается шаблон

Я не новичок в технологиях, которые использует Magento; так что написание собственного кода не проблема. Однако я не хотел бы так сильно его редактировать, чтобы в будущем было проще обновить базу кода с более поздними версиями Magento.

Спасибо,
-nelson

Ответы [ 2 ]

2 голосов
/ 19 декабря 2008

Что вы можете сделать, это создать своего собственного помощника с коллекцией (через модель), а затем отфильтровать коллекцию по количеству продуктов.

Только черновик, но я разместил код в другом вопросе, связанном с magento: Продукты Magento по категориям . Вы можете увидеть, как и когда он добавляет количество продуктов, я бы снова отфильтровал, когда это будет сделано.

Я не думаю, что это чрезвычайно "здорово" с точки зрения производительности, поэтому вместо использования их классов моделей вы могли бы написать свой собственный, расширив его и добавив фильтры по умолчанию или ярлыки непосредственно база данных.

Пока вы остаетесь в своем скине / шаблоне, больше нет проблем с обновлением.

0 голосов
/ 08 июля 2012

Это простое решение для скрытия категорий, которые могут вам помочь.

Исходное содержимое файла 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; ?>
...