隐藏Magento中没有产品的分类

3

我有许多网站使用了主站的同一个根类别。每个添加的产品都会被添加到其所属的网站(哇!)和主站。然而,我希望每个网站上的分类只在该网站上存在,如果该网站没有产品则不显示该分类。

例如:

Category1
Category2
Category3

但是,Site1只有类别1和类别2的产品,而Site2和Site3有类别2和类别3的产品;我只想让类别1/2出现在Site1上,只想让类别2/3出现在Site2和Site3上。
但是,因为Site1/2/3中的所有产品也被添加到了主站点;主站点将列出类别1/2/3。
没有任何产品直接添加到主站点。它只是其他站点的存储库。
现在,如果没有真正简单的方法来实现这一点(我确定),那么是否简单地编写自己的主题,列出仅在模板所显示的网站上具有产品的类别?
我不是Magento使用的技术方面的新手,因此编写自定义代码并不成问题。然而,我不希望编辑它太多,以便在Magento的后续版本中更容易升级我的代码库。
谢谢,
-纳尔逊
2个回答

1

好的,你可以做的是,通过一个模型创建自己的帮助程序集合,然后根据产品数量过滤该集合。

这只是一个草稿,但我在另一个与Magento相关的问题中发布了一些代码:Magento products by categories。你可以看到它是如何在何时添加产品计数的,当这个完成后我会再次进行过滤。

我认为这在性能方面并不是非常“好”,所以你可以编写自己的模型类,扩展它并添加默认过滤器,或者直接快捷地访问数据库。

只要保持你的样式/模板不变,更新也不会出现更大的问题。


0

这是一个简单的解决方案,可以帮助您隐藏类别。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接