javascript - 我需要一种解决方法来将带有破折号的 Liquid 变量分配给 javascript 变量名
问题描述
我的产品页面上有一个简短的表格供客户提交他们的电子邮件地址。Javascript 用于在我用来管理电子邮件订阅的 Klaviyo 电子邮件系统中分配自定义属性以及电子邮件地址。
我已经能够使用 Liquid 输出将一些 Shopify 产品信息(例如产品 ID)作为这些自定义属性之一发送。但是,我想发送一个 SKU、句柄或产品名称,这不起作用,因为此数据是使用破折号作为分隔符存储的。这会导致 Javascript 解析器出现问题
<script type="text/javascript">
KlaviyoSubscribe.attachToForms('#email_signup', {
hide_form_on_success: true,
custom_success_message: true,
custom_error_message: true,
extra_properties:{ //Fully customisable - call them what you want
PROPERTY_{{ Shopify.Liquid.Variable }}:true
}
});
</script>
在上面的例子PROPERTY_{{ product.id }}:true
中会很好。这将解析为PROPERTY_123456789:true
正确解析和传输的东西。
但是PROPERTY_{{ product.handle }}:true
会变成类似PROPERTY_product-handle-example:true
此处的破折号不会在 javascript 中解析。我一直在尝试将液体变量放入 JS 字符串或其他东西中,但没有得到它。我敢肯定这很简单,但我看不到这棵树的木头。
解决方案
您可以使用 JSON 过滤器:
{{ Shopify.Liquid.Variable | json }}
如此处所述: https ://help.shopify.com/en/themes/liquid/filters/additional-filters#json
高温高压
推荐阅读
- android - Where 和 where-not 指定 3d 模型缩放?
- git - “git存档”之后的电子邮件通知?
- wpf - 设置属性元素的属性
- sql-server - 需要在所有非系统数据库上运行存储过程
- python - OpenCV 找不到棋盘角
- java - java.sql.SQLException:没有这样的列:接受sql查询后
- rebus - Rebus Pub Sub:检索订阅者的标头
- android-studio - Android Studio 构建变体问题
- angularjs - 如何在 CKEditor 自定义插件中访问 AngularJS 服务/工厂
- javascript - Nodejs firesbase firestore 不使用 admin sdk 检索任何数据