Глобальная переменная Liquid не работает в файле JS

#javascript #shopify #liquid

Вопрос:

В настоящее время я создаю раздел продаж в корзине ajax (Бруклинская тема). Мне нужна variant.id продукта в моем файле js**, но понятия не имею, как это сделать. Я перепробовал все, что знаю.

Это код, который работает в любом другом файле (кроме файла js).:

 {%- assign product = all_products[settings.upsell_product] -%}

{{ product.variants[0].id }}
 

Самое забавное, что следующий код работает даже в файле js

{{ settings.upsell_headline }}

Это моя settings_scheme.код файла json:

       {
        "type": "header",
        "content": {
          "de": "Cart Upsell"
        }
      },
      {
        "type": "text",
        "id": "upsell_headline",
        "label": {
          "de": "Headline"
        }
      },
      {
        "type": "product",
        "id": "upsell_product",
        "label": {
          "de": "Upsell Product"
        }
      }
    ]
  },
 

Комментарии:

1. это js файл или liquid файл, который вы используете?

2. это файл theme.js.liquid

Ответ №1:

не добавляйте код в theme.js.liquid

settings_scheme.json храните информацию о теме. Все глобальные данные должны храниться в settings_data.json . Кроме того, данные генерируются автоматически, section когда пользователи настраивают тему.

https://shopify.dev/docs/themes/settings#basic-input-setting-types

что вам нужно сделать, так это создать раздел под названием upsell-product.liquid «Поместить json туда».

 <script>
  {%- assign product = all_products[section.settings.upsell_product] -%}

  $(document).ready(function(){
    console.log({{ product.variants[0].id }});
  });
</script>

{% schema %}
{   
  "name" : "upsell product",
  "settings" : [
    {
      "type" : "text",
      "id" : "headline",
      "label" : "headline",
      "default" : "headLine"
    },
     {
    "type": "product",
    "id": "upsell_product",
    "label": {
      "de": "Upsell Product"
    }
  ]  
}
{% endschema %}