Как переопределить файл HTML, используя пользовательский модуль?

20

Я разрабатываю пользовательский модуль для метода оплаты в Magento 2. В настоящее время я использую cc-form.html из каталога поставщика и модуль работает нормально. Смотрите ниже путь:

продавец / Magento / модуля оплаты / вид / интерфейс / веб / шаблон / оплаты / куб.см-form.html

Есть ли способ переопределить HTML-файл?

Примечание. Я хотел бы переопределить его, используя собственное расширение. Смотрите ниже путь:

Приложение / код / ​​пространство имен / модуль / вид / интерфейс / веб / шаблон / оплаты / куб.см-form.html

Любая помощь будет оценена. Спасибо!

Маквана Кетан
источник
Когда вы использовали эту форму, пожалуйста, покажите ссылку или карту сайта.
MrTo-Kane

Ответы:

34

Рабочий раствор.

Просто создайте или отредактируйте файл requirejs-config.js из указанного ниже пути.

/app/code/Namespace/Module/view/frontend/requirejs-config.js

И поместите ниже код в requirejs-config.js

var config = {
    map: {
        '*': {
          'Magento_Payment/template/payment/cc-form.html': 
              'Namespace_Module/template/payment/cc-form.html'
        }
  }
};

Таким образом, мы можем переопределить любой HTML-файл таким образом.

Маквана Кетан
источник
не работает для html файла шаблона электронной почты в модуле продаж?
Фуду
14

Вы можете просто добавить свой файл cc-form.html в свой модуль оплаты тем.

<mage_dir>/app/design/frontend/{Package}/{themename}/Magento_Payment/web/template/payment/cc-form.html

Вы можете изменить в соответствии с вашими требованиями в вышеуказанном месте.

Удалить папку VAR из корня и удалить pub/static/frontendпапку.

Вы должны запустить команду php bin/magento setup:static-content:deploy

Очистите кеш браузера и проверьте.

Ракеш Джесадия
источник
Я знаю, что это будет работать нормально, если я поместу cc-form.html под мою тему. но я создаю расширение, поэтому я не могу поместить его в тему. Я должен положить этот файл в каталог модуля.
Маквана Кетан
1
Спасибо, Ракеш. я нашел решение на stackoverflow.com/questions/37430036/…
Маквана Кетан
9

Принятое решение правильное, но я скопирую здесь полный ответ @AntonGuz из «Переполнения стека» (очень хорошо объяснено):

Да, есть. Вы можете посмотреть в пабе static, чтобы увидеть, как строится путь к статическому ресурсу.

Как это устроено

Каждый ресурс доступен со страницы по его enter code here«RequireJS ID». Это похоже на реальный путь, но разнообразно.

Например файл http://magento.vg/static/adminhtml/Magento/backend/en_US/Magento_Theme/favicon.ico.

Это настоящий путь /app/code/Magento/Theme/view/adminhtml/web/favicon.ico. Это RequireJS ID есть Magento_Theme/favicon.ico. Это означает, что файл может быть доступен через require("text!Magento_Theme/favicon.ico")или подобную команду.

Вы можете обнаружить, что RequireJS ID состоит из имени модуля и полезной части пути (после папки web).

Как я могу заменить файл

Итак, у вас есть файл
vendor/magento/module-payment/view/frontend/web/template/payment/cc-form.html

На странице загружается src как
http://magento.vg/static/frontend/Magento/luma/en_US/Magento_Payment/template/payment/cc-form.html

Таким образом, его RequireJS ID
Magento_Payment/template/payment/cc-form.html

Примечание: внутри компонентов пользовательского интерфейса это равно Magento_Payment/payment/cc-form. Слова "template" и ".html" добавляются автоматически.

И теперь вы можете заменить этот файл для приложения через конфигурацию RequireJS

var config = {
  "map": {
    "*": {
      "Magento_Payment/template/payment/cc-form.html": 
          "<OwnBrand>_<OwnModule>/template/payment/cc-form.html"
    }
  }
};

Этот фрагмент кода вы помещаете в requirejs-config.jsфайл в вашем модуле. Это все.

Возможно, это поможет кому-то понять, как это происходит.

Сергей Учухлебау
источник
Как добавить и изменить файл JS для этого HTML
Джибин Джордж
4

Я не знаю, с какой версии Magento2 она требуется, но если вы хотите переопределить шаблон из модуля Magento_Ui, вам нужно указать путь следующим образом:

var config = {
    map: {
        "*": {
            'ui/template/form/element/select.html':'Vendor_Module/templates/form/element/select.html'
        }
    }
};

Потому что в этом файле:

поставщик / Magento / модуль-UI / просмотр / основание / requirejs-config.js

Есть отображение пути:

/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

var config = {
    paths: {
        'ui/template': 'Magento_Ui/templates'
    },
    map: {
        '*': {
            uiElement:      'Magento_Ui/js/lib/core/element/element',
            uiCollection:   'Magento_Ui/js/lib/core/collection',
            uiComponent:    'Magento_Ui/js/lib/core/collection',
            uiClass:        'Magento_Ui/js/lib/core/class',
            uiEvents:       'Magento_Ui/js/lib/core/events',
            uiRegistry:     'Magento_Ui/js/lib/registry/registry',
            consoleLogger:  'Magento_Ui/js/lib/logger/console-logger',
            uiLayout:       'Magento_Ui/js/core/renderer/layout',
            buttonAdapter:  'Magento_Ui/js/form/button-adapter'
        }
    }
};
embed0
источник