Magento 2:製品の比較とウィッシュリストモジュールを無効にする安全で簡単な方法


34

Magento 2.0は、2つの製品をオンラインで販売するためだけに構築しています。商品とウィッシュリストの比較モジュールは私にとっては無関係です。

これらのモジュールを安全かつ簡単に削除するにはどうすればよいですか?コアコードをハックしたくありません。

回答:


52

Magento 2では、xmlファイルを介して製品の比較機能を実際に削除できるようになりました。製品の比較ブロックはで定義されていますvendor/magento/module-catalog/view/frontend/layout/default.xml

そしてdefault.xml、あなたのテーマにファイルを追加することでそれを削除できます:<theme_dir>/Magento_Catalog/layout/default.xml

内部で次のようにブロックを削除します:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="catalog.compare.sidebar" remove="true"/> 
        <referenceBlock name="wishlist_sidebar" remove="true" />
    </body>
</page>

魅力のように働いた。Magento 2.0.6
カムディクソン

FYI、ここでの指示の正確な位置です:devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/...
thdoan

11
ITSは、バージョン2.1.Xで働いていない
ジャイ

My Wish Listブロックの削除はどうですか?
ラズバンザンフィール

<=「true」を/削除「wishlist_sidebar」= referenceBlock名>:あなたはサイドバーからのウィッシュリストのブロックを削除するには、これを追加することができます
フランク・

32

次のxml命令を、カスタムテーマのデフォルトのxmlファイル/app/design/frontend/Vendor/theme/Magento_Theme/layout/default.xmlまたはMagento_Catalog/layout/default.xmlカスタムテーマのファイルに追加できます。

    <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    <referenceBlock name="view.addto.compare" remove="true" />
    <referenceBlock name="view.addto.wishlist" remove="true" />

取り除く

  • サイドバー比較ブロック
  • 製品詳細ページからブロックを比較
  • 製品詳細ページからウィッシュリストに追加

カテゴリページ(カタログ製品リスト)から比較する追加を削除するには、次を使用します。

<referenceBlock name="category.product.addto.compare" remove="true"/>

5
また<referenceBlock name="category.product.addto.compare" remove="true"/>、カタログ製品リストからリンクを削除するには追加する必要があります。
デニスプシェノフ

答えてくれてありがとうございます<referenceBlock name="catalogsearch.product.addto.compare" remove="true"/>。カタログ検索結果からも比較機能を削除する機能も追加できませんでした。
クリスティアーノカシオッティ

ありがとう@Devtype
Praveen Chelumalla

15

すべての比較ブロックのソースをgrepしました。2.3では、これが完全なリストです。これにより、ヘッダーから比較リンクも削除されます。

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <!-- Remove compare -->
        <referenceBlock name="catalog.compare.link" remove="true" />
        <referenceBlock name="catalog.compare.sidebar" remove="true"/>
        <referenceBlock name="catalogsearch.product.addto.compare" remove="true"/>
        <referenceBlock name="category.product.addto.compare" remove="true"/>
        <referenceBlock name="crosssell.product.addto.compare" remove="true" />
        <referenceBlock name="related.product.addto.compare" remove="true" />
        <referenceBlock name="upsell.product.addto.compare" remove="true" />
        <referenceBlock name="view.addto.compare" remove="true" />
    </body>
</page>

これは、将来の更新で変更される可能性のあるソースファイルを変更することなく、完全に機能します。
PedroKTFC

これは、カスタムテーマのdefault.xmlに入れますか?
ダニエルブラック

6

無効化のウィッシュリスト店舗>設定>顧客>ウィッシュリストとの下に、このライン&ペーストコンペア機能を無効にするMagento_Catalog /レイアウト/ default.xmlのテーマのを。

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="catalog.compare.link" remove="true"/>
        <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    </body>
</page>

次のテンプレートで$ showCompareをfalseに設定します。

Magento / Catalog / view / frontend / templates / product / list / items.phtml Magento / Catalog / view / frontend / templates / product / widget / new / content / new_grid.phtml Magento / Catalog / view / frontend / templates / product / widget / new / content / new_list.phtml Magento / Catalog / view / frontend / templates / product / widget / content / grid.phtml

次のテンプレートから比較関連スタッフを削除します。

Magento / Catalog / view / frontend / templates / product / list.phtml Magento / Catalog / view / frontend / templates / product / listing.phtml Magento / Wishslist / view / frontend / templates / item / configure / addto.phtml

参照:https : //coderwall.com/p/vsqmbw/remove-product-compare-functionality-on-magento-2-frontend


2.1.xの時点で、このソリューションはおそらく最も適切にまとめられています。
themanwhoknowstheman

4

Magentoは、コマンドラインユーティリティを提供します。例

php bin/magento module:disable -f Magento_Wishlist

Magentoのウィッシュリストは他のモジュールにも依存しているため、[-f]なしで使用するとモジュールが無効または有効にならず、次のような警告が表示されます。

ここに画像の説明を入力してください

[-f]フラグを指定してコマンドを使用すると、この問題が解決します

ここに画像の説明を入力してください

コマンドを強制的に使用している場合は、警告を確認してください

警告:--forceオプションを使用しました。その結果、モジュールが正しく機能しない場合があります。

ここで完全な情報を確認することもできますhttp://devdocs.magento.com/guides/v2.0/install-gde/install/cli/install-cli-subcommands-enable.html#instgde-cli-subcommands-enable-モジュール


ありがとう。あなたの答えは有望に見えますが、私は少し緊張しています...これは他の機能を破壊しませんか?
マレーセルバン

テストインスタンスでも同じことを試すことができますが、主に許可を変更する必要があるブレーキをかけるべきではありません
-webkul

4

から無効にすることができます

ストア>構成>顧客>ウィッシュリスト>一般オプション>有効:いいえ


4

更新: Magento 2コアの更新後、klaraの答えが比較機能を無効にする最良の方法になりました。以下をお読みください!

ウィッシュリスト機能を無効にするには、管理に移動し、[ストア]> [構成]> [顧客]> [ウィッシュリスト][有効化:いいえ]を選択する必要があります。

比較機能を無効にするために、管理にオプションはありません。module-catalog/view/frontend/templates/product/list.phtmlテンプレートをオーバーライドする必要があります。

そのためには、上で名前を付けたファイルのコンテンツを、の下にあるテーマ内の新しいファイルにコピーする必要があります<theme_dir>/Magento_Catalog/templates/product/list.phtml。次に、関係する行を削除します。

<?php
$compareHelper = $this->helper('Magento\Catalog\Helper\Product\Compare');
?>
<a href="#"
   class="action tocompare"
   title="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
   aria-label="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
   data-post='<?php /* @escapeNotVerified */ echo $compareHelper->getPostDataParams($_product); ?>'
   role="button">
    <span><?php /* @escapeNotVerified */ echo __('Add to Compare') ?></span>
</a>

これらは、Magento 2.0.1の111〜121行目にあります。


3

サイドバーを無効にするには:

<body>
  <referenceBlock name="catalog.compare.sidebar" remove="true"/>
</body>

"Add to compare"製品ページのリンクを削除するにはMagento_Catalog/templates/product/view/addto.phtml、テーマのファイルを上書きし、そこで比較アンカーを削除する必要があります。この方法では、ウィッシュリストを保持しながら、比較機能を削除できます。


3

Magento 2.1.xの場合

default.xmlファイルをテーマに追加します:/Magento_Catalog/layout/default.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="category.product.addto.compare" remove="true"/>
        <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    </body>
</page>

また、追加<referenceBlock名=「catalog.compare.link」削除=「真」/>トップメニューにリンクを削除する
アレフベンLazrek

3

これは、ここで提供される他のソリューションの拡張です。ファイル/app/design/frontend/Vendor/theme/Magento_Theme/layout/default.xmlを使用して、以下を追加します

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
    <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    <referenceBlock name="catalog.compare.link" remove="true"/>
    <referenceBlock name="related.product.addto.compare" remove="true"/>
    <referenceBlock name="view.addto.compare" remove="true"/>
    <referenceBlock name="upsell.product.addto.compare" remove="true"/>
    </body>
</page>

1

次の行を追加できます<referenceBlock name="catalog.compare.sidebar" remove="true"/> 。Magento->管理者->製品->カテゴリ->カスタムデザイン->カスタムレイアウトの更新


0

個々の製品ページに対して上記のすべての方法を試してみたところ、私の場合は重要なファイルが見つかりましたaddtocart.phtml。テーマはインストールされていますが、自分の子テーマを利用しています。他のオプションは、グリッドカテゴリビューとリストカテゴリビューで機能します(前述のlist.phtmlですが、個々の製品ページで:

<a href="#" data-post='<?php /* @escapeNotVerified */ echo $compareHelper->getPostDataParams($_product);?>'
            data-role="add-to-links"
            class="action tocompare">
    <i class="fa fa-retweet icons"></i>
    <span><?php /* @escapeNotVerified */ echo __('Compare') ?></span>
</a>

これはコメントアウトする必要があります。試行の時間と時間、それはこのファイルでした。

誰か他の人が見つけたら、私に知らせてください!


Solution.ilを見つける私の答えはベストプラクティスだと思う
ゴールディ

0

M2.1迅速かつ簡単なソリューション。
カスタムテーマを作成したくない場合や、バックエンドから作業したい場合は、バックエンドで次の操作を実行できます。変更するcmsページ、カテゴリ、または製品ページに移動します。カテゴリページの例:[デザイン]-> [レイアウト更新XML]で、次のコードを追加します。

<referenceContainer name="content">
    <referenceBlock name="catalog.compare.sidebar" remove="true" />
    <referenceContainer name="sidebar.additional" remove="true" />
 </referenceContainer>

注:追加のブロックをサイドバーに残したい場合は、次のように追加のコンテナーを「false」に設定します。

 <referenceContainer name="content">
     <referenceContainer name="sidebar.additional" remove="false" />
 </referenceContainer> 

0

他の回答に書かれているように、ウィッシュリストはバックエンド経由で無効にできます。

ストアごとのビューレベルで比較機能を削除できるFOSSモジュールがあります。

https://github.com/Joshua29LK/disable-compare-magento-2

私は短いレビューをしました:

  • 比較ブロックを削除するレイアウトハンドルを追加します
  • これは、基本的にここの回答と同じコードを使用します(ただし、ストアレベルでのみアクティブ化されます)
  • addtoリンクは、CSSを頭に挿入することで削除されます。これは少し奇妙に聞こえますが、コアテンプレートの置き換えは避けます

0

Magento 2.3.3でUltimoテーマを使用しています。テーマのcatalog_product_view.xmlファイルから比較リンクを無効にすることはできませんでした。設定はそこから来ていませんが、それらは次の場所にあります。

vendor/magento/module-catalog/view/frontend/layout/catalog_product_view.xml

私は迅速で汚れた解決策に行き、次のものを削除しました:

                    <container name="product.info.social" label="Product social links container" htmlTag="div" htmlClass="product-social-links">
                        <block class="Magento\Catalog\Block\Product\View" name="product.info.addto" as="addto" template="Magento_Catalog::product/view/addto.phtml">
                            <block class="Magento\Catalog\Block\Product\View\AddTo\Compare" name="view.addto.compare" after="view.addto.wishlist"
                                   template="Magento_Catalog::product/view/addto/compare.phtml" >
                                <arguments>
                                    <argument name="addToCompareViewModel" xsi:type="object">Magento\Catalog\ViewModel\Product\Checker\AddToCompareAvailability</argument>
                                </arguments>
                            </block>
                        </block>
                        <block class="Magento\Catalog\Block\Product\View" name="product.info.mailto" template="Magento_Catalog::product/view/mailto.phtml"/>
                    </container>

比較ボタンは永久になくなりましたが、Magentoのアップグレードを実行すると元に戻るため、再度削除する必要があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.