Вы правы относительно той части, в которой вам необходимо как-то передать эту информацию. Информация о варианте не доступна автоматически в JavaScript. Для решения этой проблемы существует 3 подхода.
- Создание глобального JS объекта
- Отображение данных внутри HTML с помощью Liquid
- Использование Shopify AJAX API
Для первого подхода просто добавьте приведенный ниже код в ваш product.liquid и получите доступ к информации через typesInfo объект в JavaScript.
<script>
let variantsInfo = {
{%- for variant in product.variants -%}
{{variant.id}} : "{{ variant.inventory_policy}}",
{%- endfor -%}
}
</script>
Для второго подхода визуализировать данные внутри некоторого HTML div и скрыть их с помощью CSS. Затем, при загрузке страницы, получите эту информацию в JavaScript, указав соответствующий селектор CSS для скрытого div и сделайте что-нибудь в соответствии с вашими требованиями.
Другое возможное решение - использовать Shopify AJAX API , При событии загрузки страницы сгенерируйте AJAX вызов для выбора продукта по дескриптору продукта. В возвращенном ответе будут все данные вариантов, которые также будут содержать ваш обязательный атрибут inventory_policy . Затем вы можете использовать его для отображения любой информации, которую вы хотите. Пример AJAX звонка будет выглядеть как
jQuery.getJSON('/products/red-rain-coat.js', function(product) {
console.log(product);
} );
Подробнее о Shopify AJAX API и получении продуктов через AJAX.