Приклади деяких запитів GraphQL для блогу Magento 2 представлені в цій статті. За допомогою цих запитів ви зможете витягнути необхідні дані блогу для прогресивної веб-програми (PWA). Запити легко тестуються в ChromeiQL - розширенні браузера Chrome.

Зауважте, що додаток Magento 2 Блог GraphQL слід спочатку встановити.

Щоб перевірити повну схему Blog GraphQL, перегляньте файл schema.graphqls.

 GraphQL запит публікації головної сторінки блогу

Запит:

query GetPosts ($currentPage: Int $pageSize: Int) {
    blogPosts (currentPage: $currentPage pageSize: $pageSize sort: ["DESC"]) {
        total_count
        items {
            post_id
            title
            short_filtered_content
            author {
                author_id
                name
                author_url
            }
            post_url
            creation_time
            tags {
                tag_id
                title
                tag_url
            }
            categories {
                category_id
                title
                category_url
            }
        }
        total_pages
    }
}

Змінні:

{
"currentPage": 1,
"pageSize": 5
}

Результат:

Як результат, ви отримаєте дані для перших 5 публікацій блогу, які мають відображатися на першій сторінці.

Index graphql test

GraphQL запит публікацій категорії блогу

За допомогою цього запиту ви отримаєте публікації для певної категорії блогу, використовуючи ідентифікатор категорії або ідентифікатор URL-адреси категорії.

Запит:

query GetPosts ($currentPage: Int $pageSize: Int $categoryId: String) {
    blogPosts (currentPage: $currentPage pageSize: $pageSize sort: ["DESC"] filter: {category_id: {eq: $categoryId}}) {
      total_count
      items {
          post_id
          title
          short_filtered_content
          author {
              author_id
              name
              author_url
          }
          post_url
          creation_time
          tags {
              tag_id
              title
              tag_url
          }
          categories {
              category_id
              title
              category_url
          }
      }
      total_pages
  }
  blogCategory (id: $categoryId) {
      title
      content
  }
 }
}
}

Змінні:

{
"currentPage": 1,
"pageSize": 5,
"categoryId":"fashion-show"
}

Результат:

Category graphql test

GraphQL запит публікацій автора блогу

За допомогою цього запиту ви отримаєте дані публікацій автора, використовуючи ідентифікатор автора або ідентифікатор URL-адреси автора.

Запит:

query GetPosts ($currentPage: Int $pageSize: Int $authorId: String) {
blogPosts (currentPage: $currentPage pageSize: $pageSize sort: ["DESC"] filter: {author_id: {eq: $authorId}}) {
    total_count
    items {
        post_id
        title
        short_filtered_content
        author {
            author_id
            name
            author_url
        }
        post_url
        creation_time
        tags {
            tag_id
            title
            tag_url
        }
        categories {
            category_id
            title
            category_url
        }
    }
    total_pages
}
blogAuthor(id: $authorId) {
    name
}
}

Змінні:

{
"currentPage": 1,
"pageSize": 5,
"authorId":"store-administrator"
}

Результат: 

Author graphql test

GraphQL запит публікацій за тегами блогу 

За допомогою цього запиту ви отримаєте список публікацій, що містять відповідний тег, використовуючи ідентифікатор тегів або ідентифікатор URL-адреси тегу.

Запит:

query GetPosts ($currentPage: Int $pageSize: Int $tagId: String) {
    blogPosts (currentPage: $currentPage pageSize: $pageSize sort: ["DESC"] filter: {tag_id: {eq: $tagId}}) {
        total_count
        items {
            post_id
            title
            short_filtered_content
            author {
                author_id
                name
                author_url
            }
            post_url
            creation_time
            tags {
                tag_id
                title
                tag_url
            }
            categories {
                category_id
                title
                category_url
            }
        }
        total_pages
    }
    blogTag (id: $tagId) {
        title
        content
    }
}

Змінні:

{
"currentPage": 1,
"pageSize": 5,
"tagId": "bags"
}

Результат:

Tags graphql test

GraphQL запит публікацій у пошуку

За допомогою цього запиту ви отримаєте список публікацій, пов’язаних із словом, яке ви шукаєте.

Запит:

query GetPosts ($currentPage: Int $pageSize: Int $searchQuery: String) {
        blogPosts (
            currentPage: $currentPage 
            pageSize: $pageSize 
            sort: ["DESC"]
            filter: {search: {eq: $searchQuery}}
        ) {
            total_count
            items {
                post_id
                title
                short_filtered_content
                author {
                    author_id
                    name
                    author_url
                }
                post_url
                creation_time
                tags {
                    tag_id
                    title
                    tag_url
                }
                categories {
                    category_id
                    title
                    category_url
                }
            }
            total_pages
        }
    }

Змінні:

{
"currentPage": 1,
"pageSize": 5,
"searchQuery:":"good"
}

Результат:

Search graphql test

Дані окремої публікації блогу

За допомогою цього запиту ви зможете отримати публікацію блогу за її ідентифікатором чи ідентифікатором її URL.

Запит:

query GetPost ($postId: String) {
                blogPost (id: $postId) {
                    post_id
                    meta_title
                    meta_description
                    title
                    filtered_content
                    author {
                        author_id
                        name
                        author_url
                    }
                    post_url
                    creation_time
                    tags {
                        tag_id
                        title
                        tag_url
                    }
                    categories {
                        category_id
                        title
                        category_url
                    }
                }
            }

Змінна:

{
"postId": "kaytips-when-in-dubai"
}

Результат:

Post graphql test

GraphQL запит категорій в бічній панелі

За допомогою цього запиту ви зможете отримати список категорій блогу.

Запит:

{
    blogCategories {
        items {
            category_id
            title                        
            category_url
        }
    }
}

Результат:

GraphQL sidebar category test

 GraphQL запит останніх публікацій в бічній панелі

За допомогою цього запиту ви зможете отримувати останні публікацій в блозі.

Запит:

query GetPosts ($pageSize: Int) {
    blogPosts (pageSize: $pageSize sort: ["DESC"]) {
        items {
            post_id
            title
            post_url
        }
    }
}

Результат:

GraphQL resent posts test

GraphQL запит тегів в бічній панелі

 За допомогою цього запиту ви зможете отримати теги блогу.

Запит:

{
    blogTags {
        items {
            tag_id
            title
            tag_url
        }
    }
}

Результат:

GraphQL sidebar tags test

GraphQL запит архіву

За допомогою цього запиту ви отримаєте список публікацій, пов’язаних з датою публікації.

Запит:

query GetPostArchive ($currentPage: Int $pageSize: Int $date: String) {
    blogPosts (
        currentPage: $currentPage
        pageSize: $pageSize
        sort: ["DESC"]
        filter: {publish_time: {like: $date}}
    ) {
        total_count
        items {
            post_id
            title
            short_filtered_content
            featured_image
            author {
                author_id
                name
                author_url
            }
            post_url
            publish_time
            tags {
                tag_id
                title
                tag_url
            }
            categories {
                category_id
                title
                category_url
            }
        }
        total_pages
    }
}

Змінні:

{
"currentPage": 1,
"pageSize": 5,
"date": "2021-06%"
}

Результат:

GraphQL Test Blog Archive