隐藏没有产品magento的类别

时间:2008-12-17 00:17:39

标签: php html magento e-commerce

我有很多网站使用与主网站相同的根类别。添加的每个产品都会添加到添加到的网站(哇)和主站点。但是,我希望每个网站的类别仅在该网站上有产品时才会显示。

如果我有:

Category1
Category2
Category3

但Site1只有Category1和Category2的产品,而Site2和Site3的产品属于Category2和Category3;我只希望Category1 / 2出现在Site1上,只有Category2 / 3出现在Site2和Site3上。

但是,因为Site1 / 2/3中的所有产品也被添加到主站点;主站点将列出Category1 / 2/3。

没有产品直接添加到主站点。它只是作为其他站点的存储库。

现在,如果没有真正简单的方法来启用它(我确定),它会像编写我自己的主题一样简单,该主题列出了只在网站上显示模板的产品的类别?

我不是Magento使用的技术的新手;所以编写自定义代码没问题。但是,我不想编辑那么多,以便将来使用Magento的版本更容易升级我的代码库。

谢谢,
-nelson

2 个答案:

答案 0 :(得分:2)

嗯,您可以做的是,使用集合(通过模型)创建自己的帮助器,然后根据产品数量过滤集合。

只有粗略的草稿,但我在另一个与magento相关的问题中发布了一些代码:Magento products by categories。您可以看到它如何以及何时添加产品数量,我会在完成后再次过滤。

我认为这在性能方面并不是非常“好”,所以不是使用他们的模型类,而是可以编写自己的,扩展它并添加默认过滤器或直接快捷方式到数据库。

只要您留在皮肤/模板中,更新就没有更大的问题。

答案 1 :(得分: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; ?>