Получение блога JSON от Shopify на витрине магазина и, возможно, фильтрация по тегам - PullRequest
0 голосов
/ 31 января 2020

Мне нужно получить статьи блога из моей витрины в формате JSON, поскольку ограниченное количество статей, которые можно получить по любому запросу на одной странице, составляет 50. Бонусом будет возможность фильтровать статьи по тегу.

Получение JSON из магазина Shopify возможно через AJAX API, но ограничено только products и cart. Я знаю, что вы можете создать альтернативный шаблон для всего остального, но как вы делаете это для блога?

Я пробовал это, но это не будет работать:

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

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Вы говорите о Storefront, но вы даете URL API администратора. Вы не можете запросить администратора из витрины магазина, не используя GraphQL или Rest API!

Liquid way

Вы ограничены 50 статьями, если не перезаписываете страницы на витрине магазина.

Но если перезаписать его, вы можете получить столько, сколько захотите. (имейте в виду, что чем больше пул статей, тем дольше будет загружаться DOM)

Пример:

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

  {% endfor %}
{% endpaginate %}

Вы можете создать отдельный шаблон блога, запросить его с помощью AJAX и добавить тег до конца.

Так что, если вы создадите шаблон блога с именем blog.ajax.liquid, ваш запрос будет выглядеть примерно так: /blogs/news/tagged/featured?view=ajax и он вернет html для нового шаблона, отфильтрованного по тег featured.


Способ GraphQL

Другой способ - использовать витрину GraphQL для получения статей.

Вам потребуется создать частное приложение и разрешить Read content like articles, blogs, and comments для использования этого.

Пример запроса:

{
  blogByHandle(handle:"news"){
    articles(first: 50, query:"tag:featured") {
      edges {
        node {
          title
        }
      }
    }
  }
}

Где это вернет 50 заголовков статей, которые имеют тег с именем featured, вы можете добавьте больше полей, которые, как вы хотите, возвращает запрос.

REST API

Другой способ - использовать REST API.

Вам все еще нужно создать приватный приложения, но вы должны разрешить только права на чтение блога и статьи, без миссий. Кроме того, все остальные права должны быть отключены, чтобы вы не позволяли другим изменять данные вашего магазина.

URL-адрес AJAX будет выглядеть примерно так: https://API_KEY:API_PASSWORD@YOUR_STORE.myshopify.com/admin/api/2020-01/blogs/BLOG_ID/articles.json?tag=featured

I не рекомендую этот подход, но он все равно будет работать.


Оттуда вы выбираете, как вам нравится go.

1 голос
/ 31 января 2020

Вы пробовали ниже конечной точки?

https://domain.myshopify.com/admin/blogs/blog_id/articles.json?tag= {tag_name}

И в 1 вызове вы можете получить до 250 объекты, которые вам нужно будет пройти, как показано ниже

https://domain.myshopify.com/admin/blogs/blog_id/articles.json?limit=250

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...