特定の製品で「カートに追加」を無効にし、代わりにカテゴリリストビューに「詳細を表示」ボタンを表示する方法


20

いくつかの特定の製品で[カートに追加]ボタンを無効にする方法を疑問に思っていましたが、これを行う方法に関する放棄されたガイドを見つけました。カテゴリリストやグリッドページではありません。

私の最初のステップを説明した後、私はここで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回行う必要があります。


これは「ショーケース」や「自慢」のウェブサイトではありません。ITのQ&A。この「いわゆる」質問を閉じることをお勧めします。
マリウス

ああ、私は人々を助けることを望んでいた-代わりにこれを削除するか、検索できるように残すべきですか?
スティーブン賢明な

@Marius OPが自分の回答を投稿するのに十分な担当者を作成する必要があるので、これは「自慢」とは思いません。私はその時まで閉鎖することに投票し、その後再開に取り組むか、Q&Aを再投稿することができます。
-philwinkle

申し訳ありませんが、Stack Exchangeの方法をよりよく学ぶ必要があります。私も経験を積んで学びます。これらのことを理解してくれてありがとう。
スティーブンワイズ

回答:


7
  1. 属性を編集するときに「製品リストで使用」を「はい」に設定して、製品リストページで属性が使用可能であることを確認します— スクリーンショット

  2. ロジックを追加して、template/catalog/product/list.phtml[カートに追加/詳細を表示]ボタンを表示します


うん!あなたの答えを選択します。元の投稿の編集で、より具体的な詳細を提供します。
スティーブン賢明な
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.