いくつかの特定の製品で[カートに追加]ボタンを無効にする方法を疑問に思っていましたが、これを行う方法に関する放棄されたガイドを見つけました。カテゴリリストやグリッドページではありません。
私の最初のステップを説明した後、私はここで8時間以内に自分の質問に答えます(評判が特定のポイントを下回っているので8時間待つ必要があります)。自分のために。これをわかりやすくしようと思います。
[ステップ1]
[1]
[カートに追加]ボタンをオンにしたくない製品で使用する属性を作成します。管理ダッシュボードで、...に移動します
カタログ>属性>属性の管理> 新しい属性の追加
たとえば、「No_cart_button」のように属性に名前を付けます
プロパティで:
Attribute Code: No_cart_button
Catalog Input Type for Store Owner: Yes/No
Use in Quick Search: No
Use in Advanced Search: No
Comparable on Front-end: No
Visible on Product View Page on Front-end: No
Used in Product Listing: YES
Used for Sorting in Product Listing: No
ラベル/オプションの管理:
Admin: Disable Add to Cart
English: Disable Add to Cart
次に、この属性を保存します。
[2]
新しい属性をグループに割り当てて、使用できるようにします。「デフォルト」を使用しました。に行く...
Catalog > Attributes > Manage Attributes Sets > Select Set
次に、この属性セットを保存します。
[ステップ2]
view.phtmlにコードを追加します
app/design/frontend/default/theme/template/catalog/product/view.phtml
次のコードブロックを見つけます。
<?php if (!$this->hasOptions()):?>
<div class="add-to-box">
<?php if($_product->isSaleable()): ?>
<?php echo $this->getChildHtml('addtocart') ?>
<?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
<span class="or"><?php echo $this->__('OR') ?></span>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php echo $this->getChildHtml('extra_buttons') ?>
<?php elseif (!$_product->isSaleable()): ?>
<div class="add-to-box">
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php endif; ?>
さて、次のコードブロックに置き換えます。
<?php
//Checks if the "Disable Add to Cart" variable is set to 'Yes':
if(($_product->getAttributeText('No_cart_button')) == "Yes"){
//If set to Yes, tell PHP what to output:
echo "This Product is not available online, please call our representative if you wish to purchase this.";
}
//If set as No, then show the 'add to cart box' as usual.
else {
?>
<?php if (!$this->hasOptions()):?>
<div class="add-to-box">
<?php if($_product->isSaleable()): ?>
<?php echo $this->getChildHtml('addtocart') ?>
<?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
<span class="or"><?php echo $this->__('OR') ?></span>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php echo $this->getChildHtml('extra_buttons') ?>
<?php elseif (!$_product->isSaleable()): ?>
<div class="add-to-box">
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php endif; ?>
<?php
}
?>
このコードは、No_cart_buttonがyesに設定されているかどうかを確認します。yesに設定されている場合、コードを出力します。これにより、カートに追加ボタンが削除され、代わりに「この製品はオンラインで利用できません。これを購入する場合は担当者にご連絡ください」というテキストが表示されます。
これら2つの手順は完了です。製品ビューページで[カートに追加]を削除します。
ただし、これにより、カテゴリリストページの[カートに追加]ボタンは削除されません。ここで、[カートに追加]ボタンではなく、カテゴリリストページに[詳細を表示]ボタンを作成します。
[編集]
回答:
kevinkirchnerは正しいです。このロジックをlist.phtmlに追加します。「商品リストで使用」の属性設定が「YES」に設定されていることを確認済みです。
OK、
[ステップ3]
[カートに追加を無効にする]を[はい]に設定すると、カテゴリリストページの[カートに追加]ボタンも無効になります。
list.phtmlに移動します
app/design/frontend/default/theme/template/catalog/product/list.phtml
このファイルを検索してください:
<?php if($_product->isSaleable()): ?>
このファイルに2回出現するはずです。
この行のすぐ下に、次のコードを挿入します
<?php
if(($_product->getAttributeText('No_cart_button')) == "Yes"){ ?>
<p><button type="button" title="<?php echo $this->__('View Details') ?>" class="button btn-cart" onclick="location.href='<?php echo $_product->getProductUrl() ?>'"><span><span><?php echo $this->__('View Details') ?></span></span></button></p>
<?php
}
else {
?>
次に、通常の「カートに追加」ボタンを作成するコードのすぐ下に、
<?php
}
?>
このすぐ下に、同じコードをもう1つ挿入します。
<?php
}
?>
さて、今、あなたが見つけたこのファイルの他のコードブロックに対して、これとまったく同じ2つのステップを実行してください
<?php if($_product->isSaleable()): ?>
1回目はリストビューで、2回目はグリッドビューであるため、これを2回行う必要があります。