Magento 2 supprimer "Estimer les frais de port et les taxes" du panier

20

Je souhaite supprimer le bloc "Estimer les frais de livraison et les taxes" du panier. Les devdocs disent que la désactivation d'un composant est la voie à suivre, j'ai donc essayé ce qui suit:

<body>
    <referenceBlock name="checkout.cart.shipping">
        <arguments>
            <argument name="jsLayout" xsi:type="array">
                <item name="components" xsi:type="array">
                    <item name="block-summary" xsi:type="array">

                        <!-- My custom part: -->
                        <item name="config" xsi:type="array">
                            <item name="componentDisabled" xsi:type="boolean">true</item>
                        </item>

                    </item>
                </item>
            </argument>
        </arguments>
    </referenceBlock>
</body>

Aucun effet. A également essayé:

<referenceBlock name="checkout.cart.shipping" remove="true"/>

De cette façon, mon bloc de totaux est totalement vide.

Quelqu'un a-t-il des suggestions?

Timon de Groot
la source

Réponses:

57

Je pense que vous avez gâché certaines balises de fermeture / d'ouverture et la quantité de ce code fonctionne:

<referenceBlock name="checkout.cart.shipping">
    <arguments>
        <argument name="jsLayout" xsi:type="array">
            <item name="components" xsi:type="array">
                <item name="block-summary" xsi:type="array">

                    <!-- My custom part: -->
                    <item name="config" xsi:type="array">
                        <item name="componentDisabled" xsi:type="boolean">true</item>
                    </item>

                </item>
            </item>
        </argument>
    </arguments>
</referenceBlock>

Pour supprimer également l'en-tête, remplacez le modèle checkout/cart/shipping.phtmlet commentez / supprimez les éléments suivants:

<div class="title" data-role="title">
    <strong id="block-shipping-heading" role="heading" aria-level="2">
        <?php /* @escapeNotVerified */ echo $block->getQuote()->isVirtual() ? __('Estimate Tax') : __('Estimate Shipping and Tax') ?>
    </strong>
</div>
Corefix
la source
En effet, j'ai un peu foiré les nœuds doubles <arguments>. Le titre apparaît toujours cependant, le contenu de la liste déroulante est vide maintenant. Des suggestions pour le supprimer complètement?
Timon de Groot
L'en-tête est spécifié dans le modèle d'expédition du panier: /vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml Vous pouvez le déplacer dans votre propre modèle et en supprimer le texte.
Corefix
1
@TimondeGroot Vous ne pouvez supprimer que la partie titre du fichier modèle, sans créer le fichier xml de mise en page. De cette façon, vous pouvez conserver le calcul d'expédition dans le bloc récapitulatif, mais masquer le formulaire "Estimer les frais d'expédition et les taxes".
Andrea
@Andrea Je sais, j'ai essayé de mettre à jour cette réponse en disant cela, mais cela a été refusé ..
Timon de Groot
1
Le plus drôle, c'est qu'il ne supprime pas le HTML. Il n'y a qu'un "affichage: aucun" ajouté. La vraie bonne solution est de réécrire le shipping-estimation.html dans Magento_Checkout / js , et encore mieux, de réécrire le shipping-estimation.js, pour supprimer tout ce qui n'est pas utile du temps CPU utilisé.
Pol Ravalitera
6

J'ai également dû me débarrasser des "Estimation des frais de livraison et des taxes" en raison d'un conflit avec un module de paiement.

Si votre seul objectif est de ne pas afficher le bloc , pourquoi ne pas utiliser CSS ? Cela a fonctionné pour moi:

.cart-container .cart-summary #block-shipping {
    display: none;
}

(Version: Magento 2.2.1)

Edit: J'ai testé ce qui précède sur 2.3.3 et il a également supprimé le sous-total et les totaux des chariots. Le CSS ci-dessous masquera uniquement les frais de livraison et les taxes estimés. Pour la version 2.3.3:

.checkout-cart-index # block-shipping {affichage: aucun; }

storepeinture
la source
Où wite ce css ??
Manish
La meilleure façon est d'utiliser un fichier CSS personnalisé qui remplace le code CSS mais ne vous oblige pas à changer le code d'origine. Il existe de nombreux guides sur la façon de procéder.
storepeinture
2
La meilleure solution et optimale serait la voie de mise en page. Si vous appliquez un affichage: aucun, le bloc chargera toujours le js (en utilisant les ressources)
Beto Castillo
3

Vous pouvez simplement ajouter ce qui suit à checkout_cart_index.xml (dans votre thème personnalisé, pas au cœur bien sûr)

<referenceBlock name="checkout.cart.shipping" display="false"/>
pmccain
la source
1
Cela supprime également les totaux, donc n'est pas assez fin pour servir
Robert Egginton
1
Veuillez noter que le code ci-dessus supprimera tous les totaux en raison d'un bogue magento: github.com/magento/magento2/issues/19347
Scriptman