0

現在、商品が在庫切れになると「addtocart」ブロックが消えますが、代わりに「addtocart」ブロックを表示するように変更したいのですが、実際の「カートに追加」ボタンの代わりに、いくつかの商品が在庫切れであることを説明するテキスト。

私はこれを単純な製品で動作させることができました

<?php echo $this->getChildHtml('addtocart') ?>

の外へ

if ($_product->isSaleable())

セクションを編集し、「addtocart」ブロックを編集して、商品が売れない場合に「バスケットに追加」ボタンの代わりに必要なテキストを表示するようにします。

私の問題は、構成可能な製品の場合、「addtocart」ブロックが表示されるかどうかを決定するコードが特に明白ではないことです.view.phtmlと他のファイルのロード全体を調べ、ディレクトリ全体をgrepしました.しかし、単純な製品用に既に変更したセクションだけが (view.phtml に) 表示されます...

何か案は?

4

2 に答える 2

0

それは同じコード ( if ($_product->isSaleable())) ですが、ファイル内にあります/app/design/frontend/base/default/template/catalog/product/view/addtocart.phtml

于 2013-10-11T07:45:32.657 に答える
0

「view.phtml」ファイルには、コードの 2 つのセクションがありました。

<?php if ($_product->isSaleable() && $this->hasOptions()): ?>
     <?php echo $this->getChildChildHtml('container2', '', true, true) ?>
<?php endif; ?>

製品が構成可能な製品 '$this->hasOptions()' であり、販売可能である場合、'container2' を取得します。Container2 には、構成可能なオプション、関連製品を表示するためのブロック (ただし、構成可能な製品の場合のみ、このコードの上のコード行は単純な製品の関連製品を表示します)、および addtocart ブロックがあります。このコードの下に私が持っていた:

<?php if (!$this->hasOptions()): ?>
     <div class="add-to-box">
     <?php echo $this->getChildHtml('addtocart') ?>
     <?php if ($_product->isSaleable()): ?>
          <?php if ($this->helper('wishlist')->isAllow() || $_compareUrl = $this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
     <?php endif; ?>
<?php endif; ?>

製品が単純な製品である場合、addtocart ブロックが表示されます 'if (!$this->hasOptions()'. 製品が構成可能な場合にサーバーに何をすべきかを伝えるものは何もなかったため、次のコードを追加する必要がありましたただし販売不可:

<?php if (!$_product->isSaleable() && $this->hasOptions()){ ?>
     <?php echo $this->getChildHtml('addtocart') ?>
<?php } ?>

私は php にかなり慣れていないので、多くの人にとってはおそらくかなり明白でしたが、なんとか 1 週間ほどそれを逃すことができました (幸運なことに、これは私のフルタイムの仕事ではありません!)。

于 2013-10-22T15:29:09.300 に答える