我用我的自定義主題覆蓋了Sylius的主題,到目前爲止工作正常。我在app/themes/myCustomTheme
中創建了一個新主題,並覆蓋了例如/SyliusShopBundle/views/
中的樹枝模板。Sylius:如何修改/自定義app.js?
現在我想覆蓋位於vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/private/js/
的一般app.js
。例如。上,而不是18行:
$('.ui.accordion').accordion();
我想用一個不同的選擇來初始化手風琴:
$('.my-custom-accordion').accordion();
假設這是我想在整個JavaScript代碼做的唯一變化。什麼是最好和最有效的方式來做到這一點?我希望在有Sylius版本更新時儘可能減少衝突,因此儘可能少地觸碰文件。當然,不需要自己重寫整個javascript功能。
我能想到的不同的方式來做到這一點,但我希望有一個更好的一個:
- 複製的一切。將所有的
UiBundle
&ShopBundle
javascript代碼複製到我的主題並修改必要的部分。更新全局gulpfile以不再使用vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js
中的gulp文件,而是使用重複的/myCustomTheme/SyliusShopBundle/Gulpfile.js
。下行:重複的代碼,JavaScript更新不再可能。 - 添加自定義路徑到現有的gulp文件。更新
vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js
中的gulp文件,這意味着刪除包含app.js
:vendorShopPath + 'Resources/private/js/**'
的行,而是引用不包含app.js
的所有單個文件,並引用我的主題文件夾中的自定義app.js
。缺點:對gulp文件的更改可能會被下一次更新覆蓋。
如何有效地修改/定製/擴展Sylius中現有的JavaScript代碼?
謝謝您的回答!如果我正確理解了你的話,那麼你在現有的app.js之上添加了自定義app.js的附加功能,對吧?如果我想添加額外的JavaScript,那麼您的工作流程似乎是一個很好的解決方案,但是如果我想更新/修改現有的內容呢? – chaenu
如果您使用與sylius'js中使用的相同的函數名稱,則會覆蓋/替換這些函數。 如果有人有我更好的想法,我打開。 –