首页 > 解决方案 > 我需要一种解决方法来将带有破折号的 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 字符串或其他东西中,但没有得到它。我敢肯定这很简单,但我看不到这棵树的木头。

标签: javascriptshopifyliquid

解决方案


您可以使用 JSON 过滤器:

{{ Shopify.Liquid.Variable | json }}

如此处所述: https ://help.shopify.com/en/themes/liquid/filters/additional-filters#json

高温高压


推荐阅读