Sylius:如何修改/自定义app.js?

时间:2017-04-02 15:11:59

标签: javascript gulp themes sylius

我用我的自定义主题覆盖了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功能。

我可以考虑不同的方法,但我希望有一个更好的方法:

  1. 复制所有内容。复制所有UiBundle& ShopBundle javascript代码到我的主题并修改必要的部分。更新全局gulpfile以不再使用vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js中的gulpfile,而是使用重复的/myCustomTheme/SyliusShopBundle/Gulpfile.js。缺点:重复的代码,javascript更新不再可能。
  2. 向现有gulpfile添加自定义路径。更新vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Gulpfile.js中的gulp文件,这意味着删除包含app.jsvendorShopPath + 'Resources/private/js/**'的行,而不是引用所有没有app.js的单个文件和对我主题文件夹中自定义app.js的引用。缺点:下次更新可能会覆盖对gulpfile的更改。
  3. 如何在Sylius中有效地修改/自定义/扩展现有的javascript代码?

1 个答案:

答案 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)); }
}