从storefront上的Shopify获取博客JSON,并可能通过标记进行过滤

从storefront上的Shopify获取博客JSON,并可能通过标记进行过滤,shopify,Shopify,我需要从我的店面获取JSON格式的博客文章,因为在任何单页请求中,您可以获取的文章数量有限,只有50篇。一个额外的好处是能够根据标签过滤文章 可以通过AJAX API从Shopify店面获取JSON,但仅限于产品和购物车。我知道你可以为其他任何东西创建一个替代模板,但是你如何为博客创建这个模板呢 我已经试过了,但不起作用: https://domain.myshopify.com/admin/blogs/blog_id/articles.json您是否尝试过低于终点 {tag_name} 在1调

我需要从我的店面获取JSON格式的博客文章,因为在任何单页请求中,您可以获取的文章数量有限,只有50篇。一个额外的好处是能够根据标签过滤文章

可以通过AJAX API从Shopify店面获取JSON,但仅限于
产品
购物车
。我知道你可以为其他任何东西创建一个替代模板,但是你如何为博客创建这个模板呢

我已经试过了,但不起作用:


https://domain.myshopify.com/admin/blogs/blog_id/articles.json

您是否尝试过低于终点

{tag_name}

在1调用中,您最多可以获得250个对象,您需要通过限制,如下所示


你试过低于终点吗

{tag_name}

在1调用中,您最多可以获得250个对象,您需要通过限制,如下所示


你说的是店面,但你给出的是管理员API的URL。如果不使用GraphQL或RESTAPI,就不能从店面请求管理员

液路 如果不覆盖店面上的页码,您将受到50篇文章的限制

但是如果你覆盖它,你可以得到你想要的。(请记住,项目池越大,DOM加载的时间就越长)

例如:

{% paginate blog.articles by 9999 %}
  {% for article in blog.articles %}

  {% endfor %}
{% endpaginate %}
您可以创建一个单独的blog模板,并使用AJAX请求它,还可以在末尾添加标记

因此,如果您创建一个名为
blog.ajax.liquid
的博客模板,您的请求将是这样的:
/blogs/news/taged/featured?view=ajax
,它将返回由标记
featured
过滤的新模板的html


图形方式 另一种方法是使用店面GraphQL来获取文章

您需要创建一个私人应用程序,并允许
阅读文章、博客和评论等内容
,才能使用它

查询示例:

{
  blogByHandle(handle:"news"){
    articles(first: 50, query:"tag:featured") {
      edges {
        node {
          title
        }
      }
    }
  }
}
如果这将返回50篇文章标题,其中包含一个名为
featured
的标记,您当然可以添加更多您希望查询返回的字段

RESTAPI 另一种方法是使用RESTAPI

你仍然需要创建一个私人应用,但你必须只允许博客和文章阅读权限,不允许写作权限。此外,应禁用所有其他权限,以便您不允许其他人修改您的存储数据

AJAX url将是这样的:
https://API_KEY:API_PASSWORD@YOUR_STORE.myshopify.com/admin/api/2020-01/blogs/BLOG_ID/articles.json?tag=featured

我不推荐这种方法,但它仍然有效



从这里你可以选择你想走的路。

你谈论店面,但你给出的是管理员API URL。如果不使用GraphQL或RESTAPI,就不能从店面请求管理员

液路 如果不覆盖店面上的页码,您将受到50篇文章的限制

但是如果你覆盖它,你可以得到你想要的。(请记住,项目池越大,DOM加载的时间就越长)

例如:

{% paginate blog.articles by 9999 %}
  {% for article in blog.articles %}

  {% endfor %}
{% endpaginate %}
您可以创建一个单独的blog模板,并使用AJAX请求它,还可以在末尾添加标记

因此,如果您创建一个名为
blog.ajax.liquid
的博客模板,您的请求将是这样的:
/blogs/news/taged/featured?view=ajax
,它将返回由标记
featured
过滤的新模板的html


图形方式 另一种方法是使用店面GraphQL来获取文章

您需要创建一个私人应用程序,并允许
阅读文章、博客和评论等内容
,才能使用它

查询示例:

{
  blogByHandle(handle:"news"){
    articles(first: 50, query:"tag:featured") {
      edges {
        node {
          title
        }
      }
    }
  }
}
如果这将返回50篇文章标题,其中包含一个名为
featured
的标记,您当然可以添加更多您希望查询返回的字段

RESTAPI 另一种方法是使用RESTAPI

你仍然需要创建一个私人应用,但你必须只允许博客和文章阅读权限,不允许写作权限。此外,应禁用所有其他权限,以便您不允许其他人修改您的存储数据

AJAX url将是这样的:
https://API_KEY:API_PASSWORD@YOUR_STORE.myshopify.com/admin/api/2020-01/blogs/BLOG_ID/articles.json?tag=featured

我不推荐这种方法,但它仍然有效



从那里你可以选择你想走的路。

答案很好。谢谢你深入研究。这确实比Shopify文档要好。我用你推荐的液体页面解决了这个问题。请记住,如果你有很多帖子(1000+以上),这个请求可能会在时间上增加很多(最多5-10秒甚至更多)。其他方法没有这个问题,但需要了解GraphQL或RESTAPI。祝你好运回答得很好。谢谢你深入研究。这确实比Shopify文档要好。我用你推荐的液体页面解决了这个问题。请记住,如果你有很多帖子(1000+以上),这个请求可能会在时间上增加很多(最多5-10秒甚至更多)。其他方法没有这个问题,但需要了解GraphQL或RESTAPI。祝你好运这是可行的,但我的错误就在这个问题上。谢谢你的意见。这是可行的,但我的错误在问题中。谢谢你的意见。