7

我有一个 Shopify 应用程序,它ScriptTag在安装后立即通过 API 添加了一个。该脚本依赖于 jQuery 和 Shopify jQuery AJAX 库。如果可能的话,我想避免强迫商家编辑多个主题文件。

据我所知:

  • 不能保证这些依赖项出现在每个主题上或以正确的顺序出现。
  • 我无法直接从 API 中引用 Shopify CDN 或主题脚本(因为它仅适用于远程脚本)。
  • 将所有脚本标签合并到一个scripts.liquid资产中不起作用,因为 API 添加的 *.liquid 资产只能访问设置对象

我不情愿地倾向于单独提供一个片段,并为商家提供之前粘贴它的说明</head>

是否有 Shopify 预期的使用模式ScriptTag

4

2 回答 2

8

您不能真正依赖主题中可用的任何东西,店主可以自定义他们想要的任何东西,而您几乎无法控制它。您的选择是:

  1. 要求您的客户拥有或将 jQuery 添加到他们的主题中。
  2. 用纯 JavaScript 编写代码,没有任何其他库依赖项。
  3. 将您需要的库嵌入到您自己的脚本中。确保将其包装在一个闭包中,这样如果他们已经拥有库,他们就不会发生冲突。

我建议自己做#3,但我可能会选择一个轻量级的库,它可以满足您的最低需求(即,如果您真的不需要遍历 jQuerys 选择器引擎,那么您可以不使用大量代码)。如果你四处搜索,那里有很多。

于 2012-08-24T11:56:05.617 回答
4

我已经继续创建了这个示例文件作为您使用 ScriptTag 的起点:http ://gist.github.com/carolineschnapp/5397337如果 jQuery 未定义或太旧,它将向您展示如何加载 jQuery您的需求,而不会破坏商店的主题。您需要使用 jQuery.noConflict。它可以很容易地完成而不会造成附带损害。

我还写了以下内容,读起来很糟糕,可能是我的文档生涯中写的最糟糕的东西,但它充满了智慧:http ://docs.shopify.com/api/tutorials/using-javascript-responsibly我希望它说服您坚持使用 ScripTag。

至于加载 Shopify jQuery AJAX 库,我完全不会。我会使用我自己的代码和 jQuery 来做我需要做的任何事情。我不想这么说,但是使用自己的代码太简单了,确实如此。您根本不需要帮助文件,这是不必要的膨胀,并且通过使用它,您可能会遇到冲突的情况,因为主题也可能正在使用它。如果一个主题使用它来 ajaxify 购物车或使用 Ajax 加载产品,它正在重新定义一些在帮助文件中定义的回调函数。您只需再次加载文件即可中断所有这些回调。人们会将商品添加到购物车,然后突然会在他们的页面上显示一个警报,或者突然间主题将显示一个警报,而不是通过 Ajax 在页面上加载的产品“

于 2013-04-16T22:56:12.173 回答