2017-01-20 1 views
0

Я пытаюсь объединить файлы JS вместе в 1 файл, однако мне нужно установить условия, используя инструкции if в файле js.Shopify - использование операторов if в файлах js.liquid и scss.liquid

Я создал файл.js.liquid, но он не работает; Я добавил тест, например:

{% if template contains 'index' %} 
    console.log('homepage loaded'); 
{% endif %} 

пример того, что я пытаюсь сделать, конечно, есть много, что нужно сделать.

{% if settings.the_simpsons_enabled and settings.simpsons_video_enable %} 
    // video popup 
    $(".video-popup").videoPopup(); 
{% endif %} 

Условные операторы также не работает в scss.liquid файлов либо:

{% if template contains 'index' or template contains 'collection' or template contains 'product' %} 
    @import url("{{ 'owl.carousel.scss' | asset_url }}"); 
{% endif %} 

Любые идеи, почему, если бы не работать, или если ее вообще возможно? Я предполагаю, что это жидкий файл.

+0

Вы не можете использовать @import. – Buts

+0

Почему бы вам просто не объединить JS и не объединить SASS с чем-то вроде глотки? – JCharette

ответ

1

Расширение Liquid для таких файлов, как CSS или JS, позволяет использовать жидкие переменные, но не инструкции.

Таким образом, {{write_my_liquid_var_here}} будет работать. {% if liquid_statement%} сделать что-то {% endif%} не будет.

+0

Кажется немного бессмысленным, im shopify плюс клиент с несколькими сайтами, так что можете поговорить с ними и посмотреть, можно ли добавить это lol im, пытаясь уменьшить запросы на файл css/js на странице, как некоторые, и с приложения, установленные магазином, не помогают ... У Google Analytics тестирование имеет низкий балл для мобильных и настольных компьютеров, что я пытаюсь уменьшить. – James

1

Что касается Shopify и SASS

Следующая не будет работать, как вы не можете использовать @import в файлах Shopify в SASS.

@import url("{{ 'owl.carousel.scss' | asset_url }}"); //This will not work 

Что касается использования условных жидких заявлений в .js.liquid файлах

Я не знаю все об этой теме, но я знаю, следующие две вещи.

1) Проверьте this thread, и вы увидите, что этот тип инструкции не будет работать, потому что файлы js анализируются независимо от обычных жидких шаблонов, поэтому он не знал бы, какой шаблон вы просматриваете.

{% if template contains 'index' %} //This will not work 

лучшее место, чтобы поставить выше логика была бы в нижней части theme.liquid файла выше </body> тега. Однако это не поможет вам с тем, что, как представляется, является вашей целью сокращения HTTP-запросов, используя один JavaScript-файл.

2) Тем не менее, вы можете значения доступа в вашем settings_data.json файле

{% if settings.the_simpsons_enabled and settings.simpsons_video_enable %} //This will work 

Я надеюсь, что это помогает

+0

Только что видел это, но на самом деле импорт действительно сработал .... но обнаружил, что он все еще загружает файлы css на загрузку страницы, поэтому не было нужным решением, так как я пытался уменьшить количество загрузок css и js-файлов при загрузке страницы многие....пытаясь немного ускорить время загрузки, и тест страницы google insights имеет низкий рейтинг для настольных компьютеров и мобильных устройств, а также пытается улучшить их, но трудно понять, как ограниченный магазин и сторонние приложения на сайте также установлен lol – James

+0

Я - купите плюс клиент с несколькими сайтами, чтобы они могли поговорить с ними и посмотреть, можно ли добавить это, я думаю, что один из их крупнейших клиентов мог бы сделать это, сделав lol im, пытаясь уменьшить запросы файла css/js на страницы, так как некоторые из них и приложения, установленные магазином, не помогают ... Тесты google insights имеют низкий балл для мобильных и настольных компьютеров, что я пытаюсь уменьшить. – James

+0

James, если часть вашего JavaScript требует использования объектов Shopify, таких как 'template',' product' или 'customer', вы можете поместить эти'