Magento 2 удалить «Оценить стоимость доставки и налог» из корзины

20

Я хочу избавиться от блока "Оценить стоимость доставки и налог" в корзине. Девдоки говорят, что отключение компонента - это путь, поэтому я попробовал следующее:

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

Нет эффекта. Также попробовал:

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

Таким образом, мой блок итогов полностью пуст.

У кого-нибудь есть предложения?

Тимон де Гроот
источник

Ответы:

57

Я думаю, что вы испортили некоторые закрывающие / открывающие теги и их количество: этот код работает:

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

Чтобы удалить также заголовок, переопределите шаблон checkout/cart/shipping.phtmlи прокомментируйте / удалите следующее:

<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
источник
Действительно, я как-то испортил двойные узлы <arguments>. Заголовок по-прежнему отображается, но содержимое раскрывающегося списка теперь пусто. Есть предложения по его полному удалению?
Тимон де Гроот
Заголовок указан в шаблоне доставки корзины: /vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml. Вы можете переместить его в свой собственный шаблон и удалить из него текст.
Corefix
1
@TimondeGroot Вы можете просто удалить часть заголовка из файла шаблона, не создавая XML-файл макета. Таким образом, вы можете сохранить расчет доставки в сводном блоке, но скрыть форму «Оценить стоимость доставки и налог».
Андреа
@ Андреа Я знаю, я пытался обновить этот ответ, сообщая об этом, но ему отказали ..
Тимон де Гроот
1
Самое смешное, что он не удаляет HTML. Просто добавлено «display: none» . Реальное правильное решение состоит в том, чтобы переписать shipping -valuation.html в Magento_Checkout / js и, что еще лучше, переписать shipping -valuation.js , чтобы удалить все ненужное использованное процессорное время.
Пол Равалитера
6

Мне также нужно было избавиться от «Расчет стоимости доставки и налога» из-за конфликта с модулем оплаты.

Если ваша единственная цель - не показывать блок , почему бы не использовать CSS ? Это сработало для меня:

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

(Версия: Magento 2.2.1)

Изменить: я проверял выше на 2.3.3, и он также удалил промежуточный итог тележки и итоги. Приведенный ниже CSS будет скрывать только приблизительную стоимость доставки и налог. Для версии 2.3.3:

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

storepeinture
источник
Где увидеть этот css ??
Маниш
Лучший способ - использовать собственный CSS-файл, который переопределяет CSS-код, но не требует изменения исходного кода. Есть много руководств о том, как это сделать.
storepeinture
2
Наилучшим и оптимальным решением будет способ разметки. Если вы примените отображение: нет, блок все еще будет загружать JS (используя ресурсы)
Бето Кастильо,
3

Вы можете просто добавить следующее в checkout_cart_index.xml (в вашей пользовательской теме, конечно, не в ядре)

<referenceBlock name="checkout.cart.shipping" display="false"/>
pmccain
источник
1
Это также удаляет итоги, поэтому недостаточно тонко, чтобы служить
Роберт Эггинтон
1
Обратите внимание, что приведенный выше код удалит все итоги из-за ошибки
magento