Magento 2 elimina "Estimación de costos de envío e impuestos" del carrito

20

Quiero deshacerme del bloque "Estimación de costos de envío e impuestos" en el carrito. Los devdocs le dicen que deshabilitar un componente es el camino a seguir, así que probé lo siguiente:

<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>

Sin efecto. También probé:

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

De esta manera, mi bloque de totales está totalmente vacío.

¿Alguien tiene sugerencias?

Timon de Groot
fuente

Respuestas:

57

Creo que estropeó algunas etiquetas de cierre / apertura y la cantidad de ellas que funciona este código:

<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>

Para eliminar también el encabezado, anule la plantilla checkout/cart/shipping.phtmly comente / elimine lo siguiente:

<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
fuente
De hecho, me equivoqué un poco con los nodos <argumentos> dobles. Sin embargo, el título todavía aparece, el contenido del menú desplegable está vacío ahora. ¿Alguna sugerencia para eliminarlo por completo?
Timon de Groot
El encabezado se especifica en la plantilla de envío del carrito: /vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml. Puede moverlo a su propia plantilla y eliminar el texto desde allí.
Corefix
1
@TimondeGroot Solo puede eliminar la parte del título del archivo de plantilla, sin crear el archivo xml de diseño. De esta forma, puede conservar el cálculo de envío en el bloque de resumen, pero ocultar el formulario "Estimación de costos de envío e impuestos".
Andrea
@Andrea Lo sé, intenté actualizar esta respuesta diciendo eso, pero me lo negaron ...
Timon de Groot
1
Lo curioso es que no elimina el HTML. Solo hay un "display: none" agregado. La verdadera solución adecuada es reescribir el envío-estimación.html en Magento_Checkout / js , y aún mejor, reescribir envío-estimación.js, para eliminar todo el tiempo de CPU usado que no sea útil.
Pol Ravalitera
6

También necesitaba deshacerme de los "Costos de envío estimados e impuestos" debido a un conflicto con un módulo de pago.

Si su único objetivo es no mostrar el bloque , ¿por qué no usar CSS ? Esto funcionó para mí:

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

(Versión: Magento 2.2.1)

Editar: probé lo anterior en 2.3.3 y también eliminó los subtotales y totales de los carros. El siguiente CSS ocultará solo el envío estimado y los impuestos. Para la versión 2.3.3:

.checkout-cart-index # block-shipping {display: none; }

tienda virtual
fuente
¿Dónde wite este CSS?
Manish
La mejor manera es usar un archivo CSS personalizado que anule el código css pero no requiera que cambie el código original. Hay muchas guías sobre cómo hacer eso.
storepeinture
2
La mejor y óptima solución sería la forma de diseño. Si aplica una pantalla: ninguna, el bloque seguirá cargando el js (usando recursos)
Beto Castillo
3

Simplemente puede agregar lo siguiente a checkout_cart_index.xml (en su tema personalizado, no básico, por supuesto)

<referenceBlock name="checkout.cart.shipping" display="false"/>
pmccain
fuente
1
Esto también elimina los totales, por lo que no es lo suficientemente fino como para servir
Robert Egginton
1
Tenga en cuenta que el código anterior se eliminarán todos los totales debido a un error de Magento: github.com/magento/magento2/issues/19347
Scriptman