使用Shopify API修改theme.liquid

时间:2015-06-17 06:00:42

标签: javascript python api rest shopify

我希望使用Shopify API为商店中的某些分析添加javascript代码段。我发现使用admin/themes/:id/assets.json我可以修改theme.liquid以插入代码段,但这会更改页面的整个内容。我当前的API调用是

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

这显然不起作用。

我只想修改<head>标记并插入一些自定义javascript。此外,ScriptTag不会有用,因为我必须从用户那里获取一些输入,在javascript中使用该输入,然后插入代码段。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

首先,您需要获取所有资产的列表,以确保在端点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"
  }
}

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

希望这有帮助,如果您有任何问题,请与我联系。