Bagaimana cara mengganti file HTML menggunakan modul khusus?

20

Saya sedang mengembangkan modul khusus untuk metode pembayaran di Magento 2. Saat ini, saya menggunakan cc-form.html dari direktori vendor dan modul berfungsi dengan baik. Lihat jalur di bawah ini:

vendor / magento / pembayaran modul / tampilan / antarmuka / web / template / pembayaran / cc-form.html

Apakah ada cara untuk mengganti file HTML?

Catatan: Saya ingin menimpanya menggunakan ekstensi khusus. Lihat jalur di bawah ini:

app / code / Namespace / Module / view / frontend / web / template / pembayaran / cc-form.html

Bantuan apa pun akan dihargai. Terima kasih!

Makwana Ketan
sumber
kapan Anda menggunakan formulir ini, tunjukkan tautan atau peta situs.
MrTo-Kane

Jawaban:

34

Solusi kerja.

Cukup buat atau edit file requireejs-config.js dari jalur di bawah ini.

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

Dan tempatkan kode di bawah ini di requireejs-config.js

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

Jadi kita dapat mengganti file html dengan cara ini.

Makwana Ketan
sumber
tidak berfungsi untuk file html templat email dalam penjualan modul?
fudu
14

Anda bisa menambahkan file cc-form.html Anda di dalam modul pembayaran tema Anda.

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

Anda dapat mengubah sesuai dengan kebutuhan Anda di tempat di atas.

Hapus folder var dari root dan hapus pub/static/frontendfolder.

Anda harus menjalankan perintah php bin/magento setup:static-content:deploy

Bersihkan cache browser Anda dan periksa.

Rakesh Jesadiya
sumber
Saya tahu ini akan berfungsi dengan baik jika saya menempatkan cc-form.html di bawah tema saya. tetapi saya membuat ekstensi jadi saya tidak bisa menempatkannya di bawah tema. saya harus meletakkan file ini di bawah direktori modul.
Makwana Ketan
1
Terima kasih rakesh. saya menemukan solusinya di stackoverflow.com/questions/37430036/…
Makwana Ketan
9

Solusi yang diterima benar, tetapi saya salin di sini jawaban lengkap @AntonGuz dari "Stack Overflow" (dijelaskan dengan sangat baik):

Ya ada. Anda dapat melihat di pub statis untuk melihat bagaimana jalur ke aset statis dibangun.

Bagaimana itu bekerja

Setiap aset dapat diakses dari halaman dengan enter code here"ID Wajib". Itu mirip dengan jalan nyata, tetapi bervariasi.

Misalnya file http://magento.vg/static/adminhtml/Magento/backend/en_US/Magento_Theme/favicon.ico.

Ini jalan yang sebenarnya /app/code/Magento/Theme/view/adminhtml/web/favicon.ico. Ini Membutuhkan ID JS adalah Magento_Theme/favicon.ico. Ini berarti file tersebut dapat diakses melalui require("text!Magento_Theme/favicon.ico")atau perintah serupa.

Anda dapat menemukan bahwa RequireJS ID terdiri dengan nama modul dan bagian jalur yang berguna (setelah folder web).

Bagaimana saya bisa mengganti file

Jadi, Anda punya file
vendor/magento/module-payment/view/frontend/web/template/payment/cc-form.html

Pada halaman itu dimuat dengan src as
http://magento.vg/static/frontend/Magento/luma/en_US/Magento_Payment/template/payment/cc-form.html

Jadi ID Persyaratannya adalah
Magento_Payment/template/payment/cc-form.html

Catatan: Di dalam komponen-komponen UI itu sama dengan Magento_Payment/payment/cc-form. Kata "templat" dan ".html" ditambahkan secara otomatis.

Dan sekarang Anda dapat mengganti file ini untuk aplikasi melalui confe RequireJS

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

Cuplikan kode ini Anda tempatkan dalam requirejs-config.jsfile di modul Anda. Itu semuanya.

Mungkin itu akan membantu seseorang untuk memahami apa yang terjadi.

Siarhey Uchukhlebau
sumber
Bagaimana Anda menambahkan dan memodifikasi file JS untuk html ini
jibin george
4

Saya tidak tahu karena versi Magento2 mana yang diperlukan tetapi jika Anda ingin mengganti template dari modul Magento_Ui, Anda perlu memberikan path seperti ini:

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

Karena dalam file ini:

vendor / magento / module-ui / view / base / requireejs-config.js

Ada pemetaan jalur:

/**
 * 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
sumber