讓我先說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; ?>