如何制作插入JavaScript文件的Shopify应用程序?

时间:2014-02-05 15:53:47

标签: javascript ruby-on-rails ruby shopify script-tag

我最近开始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文件插入所有者商店即可?我是否可以仅在某些页面中加载它,例如产品?

2 个答案:

答案 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负责创建新资产和更新现有资产