【问题标题】:How to create a global variable in Shopify?如何在 Shopify 中创建全局变量?
【发布时间】:2020-04-24 02:22:23
【问题描述】:

我正在尝试从我的一个自定义页面创建 Shopify 的动态全局变量,并且该变量必须可用于通知电子邮件模板,例如 {{ customer.first_name }}。

所以当客户端访问页面时,它应该根据客户端自动创建或更改变量的值。

到目前为止,我已经从研究中看到了以下这些答案,

  1. 使用液体的assign赋值。

例如)

{% assign global_variable %}

问题)这只适用于同一页面。

  1. 在 settings_schema.json 文件中设置变量。

例如)

{
"type": "text",
"id": "global_variable",
"label": "global variable",
"default": "Variable value"
}

问题)这适用于所有流动文件,但不适用于 Shopify 的通知电子邮件模板。

  1. 使用元字段。

例如)

document.addEventListener("DOMContentLoaded", () => {
$.ajax({
    type: 'POST',
    url: '/admin/api/2020-04/metafields.json',
    namespace: "inventory",
    key: "testing",
    value: "testingtesitng",
    value_type: "string",
    success: function(data) { 
      console.log(data)
    },
    error: function(XMLHttpRequest, textStatus) {
      Shopify.onError(XMLHttpRequest, textStatus);
    }
});

prob)我不知道这是否是一个正确的 POST 调用,但不知何故我得到了一个 HTML 代码作为响应,它在任何流动文件或电子邮件模板上都不起作用。

长话短说,我只是想知道是否可以创建一个可用于通知电子邮件模板(如 customer.first_name 或 shop.global_variable 等)的变量。

如果有任何帮助,我将不胜感激!

谢谢

【问题讨论】:

    标签: global-variables shopify shopify-app shopify-template


    【解决方案1】:

    Shopify 主题和电子邮件模板/通知是不同的平台,它们不共享变量。

    您可以将其视为一个网站和一个 mailchimp,它们不共享相同的代码,因此您无法从 MailChimp 模板内的站点访问例如 JS 变量。

    这里也适用相同的逻辑,Shopify 电子邮件模板的范围是自己的,它们不会在它们自己之间或在站点之间共享变量。


    长话短说,不,您不能在 Shopify 主题中创建全局变量并将其传递到通知电子邮件。

    【讨论】:

    • 感谢您的回复。但是,如果您是正确的,我想知道他们在购买产品后如何使用客户姓名分配变量。我的意思是,当客户访问我的网站并购买产品时,他们会填写他们的个人信息,然后 Shopify 会自动将他们的姓名设置在一个变量中,这样我就可以在像这样的模板中使用 {{ customer.first_name }}。这意味着在客户购买产品时,Shopify 会从某个地方存储用户填写的信息。我认为一定有办法吗?不过不确定..
    • @JayJeong 这些对象在电子邮件模板中可用,它们不是从主题中提取的。你在这里的逻辑不匹配。您可以在此处查看完整的变量列表help.shopify.com/en/manual/sell-online/notifications/… 当您下订单时,客户会保存在数据库中,通知模板会从那里拉客户,而不是从主题中拉客户。您可以拥有一个没有主题的 shopify 商店,并且通知模板仍然可以访问客户数据。请阅读 Shopify 液体和通知模板。
    • 我明白了.. 一些文章说我可以使用元字段向他们的服务器发送 POST 请求并将其用作 {{ shop.global_variable }}。这也不能用于模板吗?参考:community.shopify.com/c/Shopify-APIs-SDKs/… 如果真的不可能,我应该寻找另一种方式..
    【解决方案2】:

    我认为您应该使用元字段。创建元字段后,您可以轻松地在模板液体文件中检索它。

    创建元字段后,您可以尝试是否与元字段获取请求一起存储。把链接发到浏览器上看看是否正确。

    如果正确,您可以将其加载到液体文件中。就个人而言,我使用元字段来保存自定义元标记并将其加载到液体中。效果很好

    【讨论】:

      【解决方案3】:

      让我强调一些关键点:

      主题定制:

      • 使用主题自定义,我们无法设置可在 Shopify 电子邮件模板中访问的全局变量。

      自定义APP:

      • 如果您熟悉 Shopify APP 开发,那么我们可以做一招。
      1. Shopify 给我们“shop.metafields”。您可以使用端点“/admin/metafields.json”在“shop.metafields”中添加数据Shopify API

      2. 添加数据后,您可以使用以下简单的流动语法访问电子邮件模板中的元字段

        {{ shop.metafields }}

      仅供参考 - 我之前是为自己做过的

      注意:没有APP或在主题级别使用AJAX调用不能调用API

      一切顺利

      【讨论】:

        猜你喜欢
        • 2014-11-29
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多