사용자 정의 모듈을 사용하여 HTML 파일을 대체하는 방법은 무엇입니까?


20

Magento 2에서 지불 방법에 대한 사용자 정의 모듈을 개발 중입니다. 현재 공급 업체 디렉토리의 cc-form.html 을 사용 하고 있으며 모듈이 올바르게 작동합니다. 아래 경로를 참조하십시오 :

vendor / magento / module-payment / view / frontend / web / template / payment / cc-form.html

HTML 파일을 재정의하는 방법이 있습니까?

참고 : 사용자 정의 확장을 사용하여 재정의하고 싶습니다. 아래 경로를 참조하십시오 :

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

도움을 주시면 감사하겠습니다. 고맙습니다!


이 양식을 언제 사용하셨습니까? 링크 또는지도 사이트를 표시하십시오.
MrTo-Kane

답변:


34

작업 솔루션.

아래 경로에서 requirejs-config.js 파일을 만들거나 편집하십시오.

/ app / code / 네임 스페이스 / 모듈 /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 파일에 대해 작동하지 않습니까?
fudu

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

1
고마워요 난의 솔루션을 발견 stackoverflow.com/questions/37430036/...
Makwana 케탄

9

받아 들여진 해결책은 맞지만 여기 에 "Stack Overflow" ( 전체 설명)의 @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는 모듈 이름 (폴더 후 경로의 유용한 부분으로 구성 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 구성을 통해이 파일을 응용 프로그램으로 교체 할 수 있습니다.

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'
        }
    }
};

이 파일에서 :

vendor / 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'
        }
    }
};
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.