最初に、Magento はこの領域 (テンプレートにレンダリングする場合) で少し柔軟性に欠けていると言っておきましょう。私があなたを正しく理解していれば、あなたは製品が販売可能かどうかを判断しています:
- 監視するイベントを追加できます
catalog_product_is_salable_after
。このようにして、システム内で製品を販売できるかどうかを設定します。イベントでの値をsalable
Varien_Object
変更すると、在庫切れメッセージに変更されます。多分それはあなたが望むものです(しかし問題はそれがif/else
ステートメントで使用されていることです-カートに追加できるか、在庫切れです(以下のコードを参照)。
- 次に、翻訳ファイルを使用して、Out of Stockを希望する文字列に変更できます (一種のハック)。
- オーバーライドしようとする際の問題は、メソッド
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; ?>