我最近开始Shopify应用程序开发,因为我想创建一个用户安装的应用程序,并将一个外部JavaScript文件放入他们的主题中(最好只加载到products.liquid中)。
我使用ScriptTag尝试了一些Rails代码,并将JavaScript文件插入到HTML中,但它从未加载。
在此代码之后,我在app / controllers / sessions_controller.rb中进行了以下更改:
def show
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params[:shop], response['credentials']['token'])
session[:shopify] = sess
(之后)我的代码:
ShopifyAPI::Base.activate_session(sess)
ShopifyAPI::ScriptTag.create(:event => "onload", :src => "//x.com/x/myscript.js")
正如我所说,当我在Chrome中检查元素时,我看到myscript.js已插入,但它从未加载。
与'异步'是'真'有关吗?有没有办法使用ScriptTag并告诉它不是异步加载?
或者,还有另外一种方法吗?我在API和论坛上搜索了一些答案,但是他们让我非常困惑。也许我需要在正确的道路上找到一些方向?
如何在Ruby on Rails中开发Shopify应用程序,只需将JavaScript文件插入所有者商店即可?我是否可以仅在某些页面中加载它,例如产品?
答案 0 :(得分:1)
对Shopify的ScriptTag API进行POST请求。
POST /admin/api/2020-04/script_tags.json
{
"script_tag": {
"event": "onload",
"src": "https://your.dev/script.js"
}
}
卷曲示例:
curl -X POST "https://$SHOP.myshopify.com/admin/api/2020-04/script_tags.json" -H "X-Shopify-Access-Token: $ACCESS_TOKEN" -d "$PAYLOAD"
从那时起,您的脚本将始终包含在店面中,直到商家卸载您的应用为止。
答案 1 :(得分:0)
是的,你可以做得对。 请参阅Shopify.com上的文档:Shopify API reference > Asset
PUT负责创建新资产和更新现有资产