Как я могу добавить значок перед названием способа доставки в magento2?


Я хочу добавить изображение перед названием способа доставки на странице оформления заказа.Я зарегистрировался shipping.html но здесь все данные поступают из js.Я не могу найти для этого подходящего способа. Прямо сейчас я хочу добавить значок для способа доставки "Фиксированная ставка".

Спасибо

Author: Prince Patel, 2017-03-10

1 answers

Поставщик: Поставщик

Модуль: Шаг проверки

Шаг 1: Переопределить компонент доставки в checkout_index_index.xml

<item name="shipping-step" xsi:type="array">
    <item name="children" xsi:type="array">
        <item name="shippingAddress" xsi:type="array">
            <item name="component" xsi:type="string">
                Vendor_CheckoutStep/js/view/krish-shipping
             </item>
         </item>
     </item>
 </item>

Шаг 2: Создание di.xml чтобы определить наш пользовательский объект в checkoutconfig в

App/code/Vendor/CheckoutStep/etc/frontend/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <!-- pass custom variable to checkout page -->
    <type name="Magento\Checkout\Model\CompositeConfigProvider">
        <arguments>
            <argument name="configProviders" xsi:type="array">
                <item name="checkout_custom_shipping_block" xsi:type="object">
                      Vendor\CheckoutStep\Model\CustomConfigProvider
                </item>
            </argument>
        </arguments>
    </type>
</config>

Шаг 3: Создайте customconfigprovider, чтобы добавить URL-адрес носителя в Проверка конфигурации

App/code/Vendor/CheckoutStep/Model/CustomConfigProvider.php

<?php
namespace Vendor\CheckoutStep\Model;
use Magento\Checkout\Model\ConfigProviderInterface;
class CustomConfigProvider implements ConfigProviderInterface
{
    protected $_storeManager;
    public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
    {
        $this->_storeManager = $storeManager;
    }

    public function getConfig()
    {
        $mediaUrl = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA );
        $config = [];
        $config['mediaUrl'] = $mediaUrl;
        return $config;
    }
}

Шаг -4: Создание krish-shipping.js в

App/code/Vendor/CheckoutStep/view/frontend/web/js/view/krish-shipping.js

define(
    [
        'jquery',
        'ko',
        'Magento_Customer/js/model/customer',
        'Magento_Checkout/js/view/shipping'
    ],
    function(
        $,
        ko,
        customer,
        Component
    ) {
        'use strict';
        return Component.extend({
            defaults: {
                template: 'Vendor_CheckoutStep/shipping'
            },

            initialize: function () {
                var self = this;
                this._super();

                if (!customer.isLoggedIn()){
                    self.visible(false);
                }
            },

            getMediaUrl: function(methodCode) {
                var imageurl = window.checkoutConfig.mediaUrl + methodCode + '.png';
                return imageurl;
            }
        });
    }
);

Шаг 5: Копирование shipping.html из

Vendor/magento/module-checkout/view/frontend/web/template/shipping.html

Чтобы

App/code/Vendor/CheckoutStep/view/frontend/web/template/shipping.html

Добавить тег изображения в метод доставки для каждого цикла

<!--ko foreach: { data: rates(), as: 'method'}-->

<td class="col col-carrier">
       <img data-bind="attr: {
              'src': $parent.getMediaUrl(method.method_code)
         }" width="50"/>
</td>

Теперь скопируйте изображения доставки, такие как flatrate.png или bestway.png с именем метода в папке pub/media.

Вы также можете настроить, например, создать новое поле в admin и изменить изображение с помощью администратор с помощью файла модели customConfigProvider.

 3
Author: Prince Patel, 2020-12-05 13:24:31