【问题标题】:Modify theme.liquid using Shopify API使用 Shopify API 修改 theme.liquid
【发布时间】:2015-09-02 04:52:24
【问题描述】:

我希望使用Shopify API 添加一个javascript sn-p 用于整个商店的一些分析。我发现使用 admin/themes/:id/assets.json 我可以修改 theme.liquid 以插入 sn-p 但这会改变页面的整个内容。我当前执行的 API 调用是

admin/themes/35073539/assets.json
{
  "asset": {
    "key": "layout\/theme.liquid",
    "value": "{{content_for_header}}<script>console.log('foo')</script>"
  }
}

这显然行不通。

我只想修改&lt;head&gt; 标签并插入一些自定义javascript。此外,ScriptTag 不会有用,因为我必须从用户那里获取一些输入,在我的javascript 中使用该输入,然后插入 sn-p。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript python api rest shopify


    【解决方案1】:

    首先,您需要获取所有资产的列表,以确保您在 Endpoint URL 中使用了正确的 ID。 (/assets.json 前面的长号)

    GET /admin/themes/#{id}/assets.json
    

    然后你想将当前文件的副本保存到服务器作为备份,只是为了安全...

    PUT /admin/themes/#{id}/assets.json
    {
      "asset": {
        "key": "layout\/theme.bak.liquid",
        "source_key": "layout\/theme.liquid"
      }
    }
    

    由于您使用的方法会覆盖现有文件,因此您需要下载当前文件,将 HTML 提取到 javascript 变量中,修改该 HTML,然后像上面一样将 HTML 发回。

    首先下载theme.liquid....

    GET /admin/themes/#{id}/assets.json?asset[key]=layout/theme.liquid&theme_id=828155753
    

    这将返回该文件的 HTML 等。您需要添加/更改该文件的内容,然后按照您已经发送的内容发送该内容...

    PUT /admin/themes/#{id}/assets.json
    {
      "asset": {
        "key": "layout\/theme.liquid",
        "value": "*****The HTML FOR THEME.LIQUID"
      }
    }
    

    应该这样做。如果成功,现在应该添加代码。

    希望对您有所帮助,如果您有任何问题,请告诉我。

    【讨论】:

    • 但是如果用户安装了新的主题,theme.liquid文件不会改变吗?
    • 我的意思是,如果用户安装了新主题,我的分析代码将被删除。有什么办法可以把它放在某个地方,即使用户安装了一个新主题,它也不会影响我的代码?
    • 但是 JSON & ARRAY 响应显示的数据没有 html 标签,那么我怎样才能得到与液体相同的代码呢?
    • 您需要订阅themes/update webhook 并在设置为主主题后更新新主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2019-09-25
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多