2017-04-02 26 views
1

我用我的自定義主題覆蓋了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功能。

我能想到的不同的方式來做到這一點,但我希望有一個更好的一個:

  1. 複製的一切。將所有的UiBundle & ShopBundle javascript代碼複製到我的主題並修改必要的部分。更新全局gulpfile以不再使用vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js中的gulp文件,而是使用重複的/myCustomTheme/SyliusShopBundle/Gulpfile.js。下行:重複的代碼,JavaScript更新不再可能。
  2. 添加自定義路徑到現有的gulp文件。更新vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js中的gulp文件,這意味着刪除包含app.jsvendorShopPath + 'Resources/private/js/**'的行,而是引用不包含app.js的所有單個文件,並引用我的主題文件夾中的自定義app.js。缺點:對gulp文件的更改可能會被下一次更新覆蓋。

如何有效地修改/定製/擴展Sylius中現有的JavaScript代碼?

回答

1

我解決了這個問題,我在我的包(AppBundle)中創建了一個自定義的gulpfile,並以「admin」和「shop」的相同方式將其添加到全局gulp文件中。之後,您可以將自定義的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中使用的相同的函數名稱,則會覆蓋/替換這些函數。 如果有人有我更好的想法,我打開。 –