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
камдиксон

К вашему сведению, вот точное местоположение инструкций: devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/…
thoan

11
Это не работает в версии 2.1.X
Jai

Как насчет удаления блока My Wish List ?
Разван Замфир

Вы можете добавить это, чтобы удалить блок списка желаний с боковой панели: <referenceBlock name = "wishlist_sidebar" remove = "true" />
Frank

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
Правин Челумалла

15

Я нашел источник для всех блоков сравнения. Для 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 / 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.link" remove="true"/>
        <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    </body>
</page>

Установите $ showCompare в false в следующих шаблонах:

Magento / Каталог / просмотр / внешний интерфейс / шаблоны / продукт / список / items.phtml Magento / каталог / просмотр / внешний интерфейс / шаблоны / product / widget / new / content / new_grid.phtml Magento / каталог / просмотр / внешний вид / шаблоны / product / widget / new / content / new_list.phtml Magento / Каталог / просмотр / внешний интерфейс / шаблоны / product / widget / content / grid.phtml

Удалите сравнительный персонал из следующих шаблонов:

Magento / Каталог / view / frontend / templates / product / list.phtml Magento / Каталог / view / frontend / templates / product / list.phtml Magento / Wishslist / просмотр / внешний интерфейс / шаблоны / 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- модули


Спасибо. Ваш ответ выглядит многообещающе, но я немного нервничаю ... Не нарушит ли это какую-либо другую функциональность?
Малайзельван

Вы можете попробовать то же самое в Test Instance, оно не должно тормозить, в основном, будут изменены разрешения, которые необходимо изменить
webkul

4

Это можно отключить из

магазин> Конфигурации> Клиенты> Список пожеланий> Общие параметры> Включено: Нет.


4

ОБНОВЛЕНИЕ: После обновления ядра Magento 2 ответ Клары теперь является лучшим способом отключить функцию сравнения. Пожалуйста, прочитайте ниже!

Чтобы отключить функцию списка желаний, вам нужно зайти в администрацию, в разделе « Магазины»> «Конфигурация»> «Клиенты»> «Список пожеланий» и выбрать «Включено»: Нет.

Чтобы отключить функцию сравнения, нет опции в администрировании. Вам нужно переопределить 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>

Это в строках от 111 до 121 в Magento 2.0.1


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 name = "catalog.compare.link" remove = "true" />, чтобы удалить ссылку в верхнем меню
Ареф Бен Лазрек

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>

Это должно быть закомментировано. Часы и часы попыток и это был этот файл.

Если кто-то найдет другое, пожалуйста, дайте мне знать!


найти решение. я думаю, что мой ответ - лучшая практика
Голди

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

Я использую тему Ultimo на Magento 2.3.3. Я не смог отключить ссылку для сравнения из файла 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, оно вернется, поэтому его нужно будет удалить снова.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.