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>

Працював як шарм.
Магенто

FYI, ось точне розташування інструкцій: devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/…
thoan

11
Його не працює у версії 2.1.x
Jai

Як щодо видалення блоку " Мій список бажань "?
Разван Замфір

Ви можете додати це для видалення блоку списку бажань із бічної панелі: <referenceBlock name = "wishlist_sidebar" delete = "true" />
Франк

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

Я схвилював джерело для всіх блоків порівняння. Для 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 / Каталог / перегляд / frontend / шаблони / продукт / список / items.phtml Magento / Каталог / view / frontend / templates / product / widget / new / content / new_grid.phtml Magento / Каталог / Перегляд / frontend / шаблони / продукт / віджет / новий / контент / new_list.phtml Magento / Каталог / перегляд / frontend / шаблони / продукт / віджет / вміст / grid.phtml

Видаліть порівняння пов'язаного персоналу з таких шаблонів:

Magento / Каталог / view / frontend / templates / product / list.phtml Magento / Каталог / view / frontend / templates / product / listing.phtml Magento / Список бажань / 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- модулі


Спасибі. Ваша відповідь виглядає багатообіцяючо, але я трохи нервовий ... Чи це не порушить жодної іншої функціональності?
Malaiselvan

Ви можете спробувати те ж саме в тестовому екземплярі, він не повинен гальмувати в основному дозвіл буде змінено, що потрібно змінити
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" delete = "true" />, щоб видалити посилання у верхньому меню
Aref Ben 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>

Це потрібно прокоментувати. Години і години спроб і саме цей файл.

Якщо хтось виявить інше, будь ласка, дайте мені знати!


знайти рішення. Я думаю, що моя відповідь є найкращою практикою
Goldy

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, вона повернеться, тому її потрібно буде знову зняти.


-2

Ви можете використовувати цей платний модуль, щоб відключити порівняння в magento 2 ($ 20).
http://www.mage20.com/magento-2-disable-compare.html

Особливості :

  • Немає шаблону для перезапису
  • Просто в налаштуваннях так / ні в системній конфігурації.
  • Відмінно працювати на magento 2.x.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.