如何使用自定义模块覆盖HTML文件?


20

我正在开发Magento 2中用于付款方式的自定义模块。目前,我正在使用供应商目录中的cc-form.html,并且模块运行正常。参见下面的路径:

供应商/ magento /模块付款/视图/前端/网络/模板/付款/cc-form.html

有什么方法可以覆盖HTML文件吗?

注意:我想使用自定义扩展名覆盖它。参见下面的路径:

应用/代码/命名空间/模块/视图/前端/网络/模板/付款/cc-form.html

任何帮助,将不胜感激。谢谢!


您何时使用此表格,请显示链接或地图站点。
MrTo-Kane

Answers:


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放在主题下会很好用。但我正在创建扩展程序,因此无法将其置于主题下。我必须将此文件放在模块目录下。
Makwana Ketan's


9

接受的解决方案是正确的,但是我在这里从“堆栈溢出”中复制了完整的@AntonGuz答案(解释得很好):

就在这里。您可以在pub static中查看以了解构造静态资产的路径。

怎么运行的

每个资产enter code here的“ RequireJS ID” 都可以从页面访问。它与真实路径相似,但变化多样。

例如file 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由模块名称和路径的有用部分(在folder之后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

旁注:在UI组件内部,它等于 Magento_Payment/payment/cc-form。单词“ template”和“ .html”会自动添加。

现在您可以通过RequireJS config将此文件替换为应用程序

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

此代码段已放置在requirejs-config.js模块中的文件中。就这些。

也许它将帮助人们理解它的发生。


您如何添加和修改此html的JS文件
jibin george,

4

我不知道需要哪个版本的Magento2,但是如果您要覆盖Magento_Ui模块中的模板,则需要提供如下路径:

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

因为在此文件中:

供应商/magento/module-ui/view/base/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'
        }
    }
};
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.