在 Javascript 中访问 Shopify Liquid 变量
Accessing Shopify Liquid variables in Javascript
我的问题是,是否可以使用 Javascript 访问 Shopify Liquid 中的变量?
{% assign my_array= "apples, oranges, peaches, tomatoes" | split: ", " %}
function my_function(number){
return "{{my_array[number]}}";
}
$('#click_me').click(function(){
alert(my_function(0));
});
我知道 AJAX 和 PHP 可以做到这一点,但是有没有类似的方法可以单独使用 Shopify Liquid 和 JQuery 来实现?
Liquid 是一种后端诱人语言,这意味着它在 Javascript 之前呈现。这意味着一旦液体渲染完成,您将无法访问液体逻辑,并且由于 JS 是在液体渲染之后呈现的,这意味着您根本无法访问它。
所以不能实时给liquid传递JS变量
但是你可以用液体创建一个JS对象:
{% assign my_array= "apples, oranges, peaches, tomatoes" | split: ", " %}
var my_array = {{ my_array | json }};
function my_function(number){
return "my_array[number]";
}
$('#click_me').click(function(){
alert(my_function(0));
});
您可以使用 AJAX 获取特定页面,但从您的示例来看,这对您没有好处,因为您正试图在 Javascript 事件上访问液体变量,而这不是可能。
您可以设置备用布局,例如 product.json.liquid
,然后您可以通过 AJAX 请求访问它,例如:
var request = jQuery.get("/products/" + productHandle + "?view=json", function(res) {
productJSON = JSON.parse(res)
}
您的 product.json.liquid
文件可能看起来像这样(注意布局 none 标签 - 接收未更改的 json 很重要):
{% layout none %}
{
"productTitle": "{{ product.title}}",
"customField": "{{ product.metafields.global.customField }}"
}
我的问题是,是否可以使用 Javascript 访问 Shopify Liquid 中的变量?
{% assign my_array= "apples, oranges, peaches, tomatoes" | split: ", " %}
function my_function(number){
return "{{my_array[number]}}";
}
$('#click_me').click(function(){
alert(my_function(0));
});
我知道 AJAX 和 PHP 可以做到这一点,但是有没有类似的方法可以单独使用 Shopify Liquid 和 JQuery 来实现?
Liquid 是一种后端诱人语言,这意味着它在 Javascript 之前呈现。这意味着一旦液体渲染完成,您将无法访问液体逻辑,并且由于 JS 是在液体渲染之后呈现的,这意味着您根本无法访问它。
所以不能实时给liquid传递JS变量
但是你可以用液体创建一个JS对象:
{% assign my_array= "apples, oranges, peaches, tomatoes" | split: ", " %}
var my_array = {{ my_array | json }};
function my_function(number){
return "my_array[number]";
}
$('#click_me').click(function(){
alert(my_function(0));
});
您可以使用 AJAX 获取特定页面,但从您的示例来看,这对您没有好处,因为您正试图在 Javascript 事件上访问液体变量,而这不是可能。
您可以设置备用布局,例如 product.json.liquid
,然后您可以通过 AJAX 请求访问它,例如:
var request = jQuery.get("/products/" + productHandle + "?view=json", function(res) {
productJSON = JSON.parse(res)
}
您的 product.json.liquid
文件可能看起来像这样(注意布局 none 标签 - 接收未更改的 json 很重要):
{% layout none %}
{
"productTitle": "{{ product.title}}",
"customField": "{{ product.metafields.global.customField }}"
}