2011-01-31 29 views
1

我的开发网站有一个交通灯图形系统来说明每个物品的库存水平。 在这些简单的产品中,我有一些捆绑产品(未来会有更多)。 在产品清单(和详细信息)页面上,即使包装中包含的每件产品均为IN库存,库存图标也始终显示为红色或缺货。不要显示捆绑产品的库存计数器

我想要解决这个问题的唯一方法是隐藏所有捆绑产品的股票图形。

有谁知道如何做到这一点? 如何在代码中执行测试以显示(或不显示)基于产品type_id被捆绑的库存图形?

我担心这是不是一个好主意,因为在显示页面之前测试每个产品的额外开销?

欢迎任何其他建议! 干杯!

回答

1

事实证明,这比以前想象的要简单得多。 以下代码将检查产品是否为“捆绑”类型,然后有条件地显示库存计数器。

<?php if($_product->getTypeId() != "bundle"): ?> 
[Stock counter display code here] 
<?php endif; ?> 

我希望能帮助别人找这个!

1

通过查看默认主题,我发现该捆绑包有自己的显示库存状态的模板,用于检查Mage_Bundle_Model_Product_Type::isSalable(),这已经完成了加载所有组件产品并单独检查它们的昂贵操作。价格也以类似的方式工作,加载组件。这是昂贵的,因为这是一个很大的EAV操作。我工作过的一些最慢的商店显然有很多捆绑/可配置产品。

因此,数据库已经完成了工作,并且再次循环加载的产品再次检查库存可能不会有什么大不了的。除此之外,你可以通过使用类似CatalogCache的东西来限制影响。

不幸的是,我没有看到库存数量事件,因此您可能需要使用自己的getStockQty()方法来扩展Mage_Bundle_Model_Product_Type以进行适当的查找和计算。

如果您已经更改了库存显示,那么它应该在template/bundle/catalog/product/view/type/bundle.phtml文件中。如果您想以最简单的方式隐藏包裹的库存水平,请从中移除“交通信号灯”。这不会影响其他产品类型。

+0

感谢您的回复,并道歉离开这么久! 让我们暂时忽略股票级别显示的事情 - 比如说我只想隐藏商品数据的一部分到商品页面模板上,并且我需要在循环显示之前测试每个商品数据。 要执行的测试需要确定产品是否为捆绑产品。我相信每个prodyct类型都有一个type_id,但这里是一个问题: 如何检查每个产品的typeid。有没有getTypeID()函数这样的事情? – robgt 2011-04-12 16:36:06