让我先说Magento在这个领域缺乏一点灵活性(当渲染模板时)。如果我正确理解你的话,你正在确定产品是否可以销售:
- 你可以添加一个事件来观察
catalog_product_is_salable_after
。通过这种方式,您正在系统内部设置产品是否可供出售。在事件中更改salable
Varien_Object
的值时,它会将其更改为缺货消息。也许这就是你想要的(但问题在于它在if/else
声明中使用 - 它可以添加到购物车中,也可以缺货(见下面的代码)
- 然后,您可以使用翻译文件更改缺货到您想要的字符串(类型的黑客)
- 尝试覆盖
Mage_Catalog_Block_Product_List
的问题是,直到_toHtml
方法才会包含模板文件。并且在代码块的开头调用parent::_toHtml()
。但是,要删除添加到购物车按钮会涉及一些非常困难的正则表达式。
这是块代码。它确实有点粘。
<?php if($_product->isSaleable()): ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>