마 젠토 2 : 제품 비교 및 ​​위시리스트 모듈을 비활성화하는 안전하고 쉬운 방법


33

내 제품 중 2 개를 온라인으로 판매하기 위해 Magento 2.0 만 구축 중입니다. 제품 및 위시리스트 비교 모듈은 관련이 없습니다.

해당 모듈을 안전하고 쉽게 제거하는 방법은 무엇입니까? 핵심 코드를 해킹하고 싶지 않습니다.

답변:


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>

매력처럼 일했다. 마 젠토 2.0.6
camdixon

참고로, 다음은 정확한 지침 위치입니다. devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/…
thdoan

11
버전 2.1.X에서 작동하지 않음
Jai

My Wish List 블록을 제거하는 것은 어떻습니까?
Razvan Zamfir

사이드 바에서 위시리스트 블록을 제거하기 위해 이것을 추가 할 수 있습니다 : <referenceBlock name = "wishlist_sidebar"remove = "true"/>
Frank

32

다음 테마를 사용자 정의 테마의 기본 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"/>은 카탈로그 제품 목록에서 링크를 제거 하기 위해 추가해야 합니다.
Denis Pshenov

답장을 보내 주셔서 감사 <referenceBlock name="catalogsearch.product.addto.compare" remove="true"/>합니다. 카탈로그 검색 결과에서도 비교 기능을 제거하는 기능도 추가하지 않았습니다 .
Cristiano Casciotti

@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에 들어가야합니까?
Daniel Black

6

에 안 위시리스트 상점> 구성> 고객> 위시리스트 와는 비교 기능에 다음이 줄 붙여 비활성화 / 레이아웃 / default.xml에 Magento_Catalog 테마의를.

<?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로 설정하십시오 .

마 젠토 / 카탈로그 /view/frontend/templates/product/list/items.phtml 마 젠토 / 카탈로그 /view/frontend/templates/product/widget/new/content/new_grid.phtml 마 젠토 / 카탈로그 / view / frontend / templates / product / widget / new / content / new_list.phtml 마 젠토 / 카탈로그 /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부터이 솔루션은 아마도 가장 잘 조합되어있을 것입니다.
themanwhoknowthetheman

4

Magento는 명령 행 유틸리티를 제공합니다. 예

php bin/magento module:disable -f Magento_Wishlist

마 젠토 위시리스트는 다른 모듈에도 의존하므로 [-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 코어 업데이트 이후, 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

마 젠토 2.1.x

/Magento_Catalog/layout/default.xml에서 테마에 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 찾기 내 대답은 모범 사례라고 생각
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 Link는 머리에 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>

비교 버튼은 영구적으로 사라졌지 만 마 젠토 업그레이드를 수행하면 다시 돌아와야합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.