我用我的自定义主题覆盖了Sylius的一般主题,到目前为止工作正常。我在app/themes/myCustomTheme
创建了一个新主题并覆盖了/SyliusShopBundle/views/
中的树枝模板。
现在,我想覆盖位于app.js
的常规vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/private/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
中的gulpfile,而是使用重复的/myCustomTheme/SyliusShopBundle/Gulpfile.js
。缺点:重复的代码,javascript更新不再可能。vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js
中的gulp文件,这意味着删除包含app.js
:vendorShopPath + 'Resources/private/js/**'
的行,而不是引用所有没有app.js
的单个文件和对我主题文件夹中自定义app.js
的引用。缺点:下次更新可能会覆盖对gulpfile的更改。如何在Sylius中有效地修改/自定义/扩展现有的javascript代码?
答案 0 :(得分:1)
我为我解决了这个问题,在我的捆绑包(AppBundle)中创建了一个自定义gulp文件,并以“admin”和“shop”的方式将其添加到全局gulp文件中。之后,您可以在布局或任何模板中包含自定义app.js.在我的例子中,我修改了Product / show.html.twig以添加我的自定义.js:
private bool _icChecked;
public bool IsChecked
{
get { return _icChecked; ; }
set { _icChecked; = value; NotifyPropertyChanged(); UpdateColumnValue(Convert.ToInt32(ID)); }
}