存储和检索自定义 Shopify 应用的数据

Storing and retrieving data for custom Shopify apps

所以我正在尝试为我的商店构建一些东西,但有些事情有点不清楚。

  1. 如果我需要保存一些用户设置我需要我自己的后端吗 专门针对那个应用程序?为简单起见,我想构建一个应用程序 在购物车中保存和显示自定义消息-template.liquid.To 实现这一点,我认为我的应用程序应该向我的后端发出请求(让 比如,在 heroku 上)并将其保存在应用程序正在使用的某个数据库中?

  2. 如何在 cart-template.liquid 中检索该数据?我想我 构建一个调用我后端的 public 端点的片段 returns 使用 fetch() 或 axios.get 保存消息 使用 {% render 'fetch-custom-message-snippet' %} ?

    嵌入它
  3. 假设我要求用户输入,即。 "刻字留言" 表格在购物车-template.liquid, 当然。使用了以下代码段:

    <p class="line-item-property__field">
      <label for="engraved-message">Engraved message</label>
      <input id="engraved-message" type="text" name="properties[Engraved message]">
    </p>
    

    我如何确保这些信息被捕获并传递给我?我想我想在订单详情的某个地方看到它。

这里是专门用于创建自定义 shopify 输入字段以获取雕刻信息的教程:https://community.shopify.com/c/Shopify-Design/Product-pages-Get-customization-information-for-products/td-p/616503

If I need to save some user settings do I need my own backend just for that app specifically? For simplicity sake, I want build an app to save and display a custom message in cart-template.liquid.To achieve that, I think my app should make a request to my backend (let say, on heroku) and save it in some db that app is using?

是的,您需要自己的后端。您的应用程序单独负责存储自己的信息(有一些例外情况,例如我在下面向您展示的特殊订单字段)——这通常会推断出一个数据库来备份您的服务并保存您的数据。请查看 this thread,因为您可以在那里找到很多有价值的信息。

关于 cart-template.liquid 我建议您查看官方 "Shopify Developers" 文档。 您可以显示和请求的所有信息都在此处进行了清晰的解释和排序。

How do I retrieve that data in cart-template.liquid? I guess I build a snippet that calls a public endpoint of my backend that returns that saved message using fetch() or maybe axios.get and embed it using {% render 'fetch-custom-message-snippet' %} ?

再一次有很好的指导。我建议看一下 this blog post which goes into in-depth on this topic. Shopify's documentation 关于 Liquid 模板语言也强烈建议阅读。

您如何检索该数据?根据此 specific example 任何输入都将提供给您在 Shopify 后台的订单页面。例如:

<label for="CartNote">Special instructions</label>
<textarea name="note" id="CartNote">{{ cart.note }}</textarea>

*取自 https://shopify.github.io/liquid-code-examples/example/cart-notes*; 显示了一个 Special instruction 标签和文本区域,供用户提交有关订单的详细信息 - 如前所述,您将在 Shopify 后台的订单页面上获取此数据。

Say I ask for user input, ie. "Engraved message" and the form is in cart-template.liquid, of course. The following snippet is used: [...] How do I make sure that bit of information is captured and passed to me? I guess I want to see it somewhere in the order details.

见上文

//编辑:

为了防止混淆:您似乎只想开发一个自定义应用程序供个人使用,而不是在 Shopify App Store 中发布它 - 在这种情况下,您通常不需要外部数据库;例如您提供的示例带有一个简单的订单请求,可以通过 Shopify 的示例轻松实现。

对于您的具体情况,此代码片段(我 修改了 您的原始示例以适应这种情况 - 它显然不是完整的 cart-template.liquid;在这种情况下,文件是称为 cart.liquid):

<label for="engraved-message">Engraved message</label>
<textarea name="message" id="engraved-message">{{ cart.note }}</textarea>

//编辑 2:

link - 由该线程中的另一个用户共享,即 @Simas Butavičius - 如果您在定制过程中遇到一般问题,实际上很有用,即如果你想修改一些基本概念或想检查如何在你网站的整个结构中从上面实现代码片段,我建议浏览 this site.

不用说了,一般有几百个good tutorials, questions regarding the same "issue"或者其他资源


我建议出于 进一步阅读 的目的查看其中一些 link 和指南(上面可能提​​到了一些):