2017-04-02 4 views
1

Syliusの一般的なテーマを私のカスタムテーマで上書きしています。 app/themes/myCustomThemeに新しいテーマを作成し、上書きしています。小枝のテンプレートは/SyliusShopBundle/views/です。Sylius:app.jsの変更/カスタマイズ方法

vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/private/js/にある一般を上書きしたいと思います。例えば。代わりに、ライン18上:

$('.ui.accordion').accordion(); 

私はアコーディオンを初期化するために別のセレクターを使用したい:

$('.my-custom-accordion').accordion(); 

これは私が全体のJavaScriptコードでやりたいだけの変更であると仮定します。これを行う最も効率的な方法は何ですか?私はSyliusのバージョンが更新されているので、できるだけ少ないファイルに触れるときに、できるだけ最小限の競合を起こしたいと思っています。もちろん、JavaScriptの機能全体を自分で書き直す必要はありません。

私はこの作業を行うための別の方法を考えることができますが、私は1つでも良くあります願っています:

  1. がすべてを複製します。UiBundle & ShopBundle JavaScriptコードを自分のテーマにコピーし、必要な部分を修正してください。グローバルgulpファイルを更新し、gulpfileをvendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.jsで使用しなくなり、代わりに複製された1つの/myCustomTheme/SyliusShopBundle/Gulpfile.jsを使用します。欠点:コードが重複し、javascriptの更新ができなくなりました。
  2. 既存のgulpfileにカスタムパスを追加します。 のgulpファイルを更新します。つまり、app.jsvendorShopPath + 'Resources/private/js/**'を含む行を削除し、を含まないすべての単一ファイルを参照し、自分のテーマフォルダのapp.jsを参照します。欠点:gulpfileへの変更は、おそらく次回の更新で上書きされます。

Syliusの既存のJavaScriptコードを効率的に変更/カスタマイズ/拡張するにはどうすればよいですか?

答えて

1

私はこれを私のバンドル(AppBundle)にカスタムgulpfileを作成し、それを "admin"と "shop"と同じ方法でグローバルgulpfileに追加しました。その後、カスタムapp.jsをレイアウトやその他のテンプレートに含めることができます。私の場合は、Product/show.html.twigを変更してカスタム.jsを追加しました。

{% block javascripts %} 
{{ parent() }} 

{% include '@SyliusUi/_javascripts.html.twig' with {'path': 'assets/app/js/app.js'} %} 
{% endblock %} 
+0

ありがとうございました!正しく理解していれば、既存のapp.jsの上にカスタムapp.jsの追加機能が追加されています。あなたのワークフローは、私が追加のjavascriptを追加したい場合には良い解決策だと思われますが、既存のものを更新/修正したいのですが? – chaenu

+0

sylius 'jsで使用されているのと同じ関数名を使用する場合は、それらの関数を上書き/置き換えるよりも。 誰かがいる場合、私はより良いアイデアのために開いています。 –

関連する問題