Magento 2에서 JS 확장 / 재정의


34

Magento2가 스크립트 로딩을 위해 RequireJS를 사용하고 스킨 폴더 가 더 이상 없기 때문에 문제가 발생했습니다.

Magento의 모듈 JS 파일을 수정 된 버전으로 바꾸려면 어떻게해야합니까?

예를 들어 — Magento_Checkout 확장에 속하는 opc-checkout-method.js 입니다. 내가 볼 수있는 한 requirejs-config.js 파일에 정의되어 있지 않습니다.

내 확장은 Magento_Checkout 이후에로드 되므로 requirejs-config.js 데이터가 requirejs-config 파일의 끝에 추가됩니다.

아니면 전체 스크립트를 바꾸지 않고 다른 방법으로해야합니까?


1
파일로로드 된 객체의 함수를 교체하는 것만 큼 파일을 교체해서는 안된다고 생각합니다.
Peter O'Callaghan

답변:


93

스킨 폴더는 없지만 테마를 계속 사용할 수 있습니다.

개념 증명 op-checkout-method.js으로이 예제를 사용 했습니다.

전제 조건 :

  • Magento2-beta11 설치
  • 기본 테마가 활성화되었습니다 (공백).
  • pub/static폴더에 파일이 생성되지 않습니다 (pub / static / frontend 폴더 제거)

행위:

  • op-checkout-method.js파일을 모듈 위치 app/code/Magento/Checkout/view/frontend/web/js/opc-checkout-method.js에서 빈 테마로 복사 했습니다.app/design/frontend/Magento/blank/Magento_Checkout/web/js/opc-checkout-method.js
  • 복제 파일을 편집하고 추가 console.log('something')또는 alert('something')에서 _create의 기능 mage.opcCheckoutMethod위젯.
  • 브라우저 캐시를 지 웁니다.

결과:

  • 결제 페이지가로드되면 경고가 표시되거나 텍스트가 콘솔에 기록 된 것을 볼 수 있습니다.

관련 정보 :

cli php dev/tools/Magento/Tools/View/deploy.php(정적 리소스를 게시하는 스크립트) 에서 실행하면 새 js 파일이 배치됩니다.pub/static/frontend/Magento/blank/en_US/Magento_Checkout/js/opc-checkout-method.js

[편집하다]

모듈을 통해 할 수있는 방법을 찾았습니다.

이것을 [Namespace]/[Module]/view/frontend/requirejs-config.js추가하십시오 :

var config = {
    map: {
        '*': {
            'Magento_Checkout/js/opc-checkout-method':'[Namespace]_[Module]/js/opc-checkout-method'
        }
    }
};

그런 다음 [Namespace]/[Module]/view/frontend/web/js/opc-checkout-method.js컨텐츠로 파일 을 작성하십시오 .

테스트 목적으로 원본 파일을 복제 console.log하고 _create함수에 다시 추가했습니다 .

또한 프론트 엔드의 공용 자원을 재생성해야합니다.


고마워요, 마리우스! 확장 내에서 비슷한 일을 할 수 있습니까?
DmitryR

나는 당신이 확장에서 그것을하지 않는다고 생각합니다. 결제 템플릿을 완전히 변경하지 않으면 magento 1에서는 불가능했습니다. 그러나 나는 그것을 할 방법을 찾을 것입니다.
Marius

다시 한번 감사합니다, 마리우스 기본 체크 아웃을 재정의하는 사용자 정의 체크 아웃을 구현하려고하는데 JS 재정의가 붙어 있습니다.
DmitryR

1
@DmitryR. 답변에 대한 내 업데이트를 참조하십시오.
Marius

requirejs-config.js의 장소는 이제 Vendor / Module / view / frontend / requirejs-config.js입니다
Eugen Bogdanovich

11

기본 JS 구성 요소 확장 / 대체에 대한 공식 문서는 다음과 같습니다. http://devdocs.magento.com/guides/v2.0/javascript-dev-guide/javascript/custom_js.html

피드백은 환영합니다!


3
MagentoSE에 오신 것을 환영합니다. 이 답변은 링크 대신 여기에 답변을 추가 한 경우 향후 사용자에게 더 유용합니다. 나중에 링크가 끊어지면 검색자가 참조하는 정보를 찾지 못합니다.
AreDubya

2
그것은 좋은 지적이지만 주제가 이동할 때 301 리디렉션을 추가하여 404의 위험을 최소화합니다.
Steve Johnson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.