Javascript Sylius:如何修改/定制app.js?
我用我的自定义主题覆盖了Sylius中的一般主题,到目前为止,它工作得很好。我在Javascript Sylius:如何修改/定制app.js?,javascript,gulp,themes,sylius,Javascript,Gulp,Themes,Sylius,我用我的自定义主题覆盖了Sylius中的一般主题,到目前为止,它工作得很好。我在app/themes/myCustomTheme中创建了一个新主题,并正在覆盖/SyliusShopBundle/views/中的树枝模板 现在我想覆盖位于供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/Resources/private/js/中的常规app.js。例如,在第18行: $('.ui.accordion').accordion(); 我想使用不同的选择器
app/themes/myCustomTheme
中创建了一个新主题,并正在覆盖/SyliusShopBundle/views/
中的树枝模板
现在我想覆盖位于供应商/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,使其不再使用供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/gulpfile.js中的gulpfile,而是使用重复的一个/myCustomTheme/SyliusShopBundle/gulpfile.js
。缺点:代码重复,javascript更新不再可能供应商/sylius/sylius/src/sylius/Bundle/ShopBundle/gulpfile.js中更新gulpfile,这意味着删除包含app.js
:vendorShopPath+'Resources/private/js/**'
的行,而是引用没有app.js
的所有单个文件,并引用我的主题文件夹中自定义的app.js
。缺点:对gulpfile的更改可能会被下一次更新覆盖
如何有效地修改/自定义/扩展Sylius中现有的javascript代码?我解决了这个问题,在我的捆绑包(AppBundle)中创建了一个自定义gulpfile,并以与“admin”和“shop”相同的方式将其添加到全局gulpfile中。之后,您可以在布局或任何模板中包含自定义app.js。在我的例子中,我修改了Product/show.html.twig以添加我的custom.js:
{% block javascripts %}
{{ parent() }}
{% include '@SyliusUi/_javascripts.html.twig' with {'path': 'assets/app/js/app.js'} %}
{% endblock %}
谢谢你的回答!如果我没弄错的话,你是在现有app.js的基础上添加自定义app.js的附加功能,对吗?如果我想添加额外的javascript,那么您的工作流似乎是一个很好的解决方案,但是如果我想更新/修改现有的javascript呢?如果您使用与sylius的js中使用的相同的函数名,那么您将覆盖/替换这些函数。如果有人有更好的想法,我愿意接受。