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
ファイルによってロードされたオブジェクトの関数を置き換えるほどファイルを置き換えるべきではないと思います。
ピーターオキャラハン

回答:


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では不可能でした。しかし、私はそれを行う方法を探します。
マリウス

ありがとう、マリウス。デフォルトのチェックアウトをオーバーライドするカスタマイズされたチェックアウトを実装しようとしていますが、JSのオーバーライドに固執しています。
DmitryR

1
@DmitryR。答えの更新を参照してください。
マリウス

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のリスクを最小限に抑えます。
スティーブジョンソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.