首先让我先说 Magento 在这方面缺乏一点灵活性(在渲染到模板时)。如果我对您的理解正确,则您正在确定产品是否可销售:
- 您可以添加要关注的事件
catalog_product_is_salable_after
。通过这种方式,您可以在系统内设置产品是否可供销售。当您更改salable
Varien_Object
事件中的值时,它将更改为缺货消息。也许这就是您想要的(但问题是它在if/else
语句中使用 - 它可以添加到购物车中,或者缺货(参见下面的代码)。
- 然后,您可以使用翻译文件将Out of Stock更改为您想要的字符串(一种 hack)。
- 尝试覆盖的问题
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; ?>