Gatsby / Drupal 8 - получение образа при использовании медиа-модуля (установка Acquia Lightning) - PullRequest
0 голосов
/ 07 марта 2019

В стандартной установке Drupal 8 с использованием изображений в узле довольно легко получить изображение через GraphQL. Здесь отличные примеры: https://github.com/gatsbyjs/gatsby/tree/master/examples/using-drupal

С помощью профиля установки Acquia Lightning (или, если вы ожидаете, что вы просто используете модуль Media), Media добавляет изображения по-другому, в GraphiQL я вижу поле Media в отношениях, единственным подполем внутри этого поля является __typename

    {
      allNodeBlog {
        edges {
          node {
            relationships {
              field_media {
                __typename
              }
            }
          }
        }
      }
    }

Я также могу посмотреть на allMediaImage (или аналогичный), в котором у меня есть доступ к самим изображениям. Я также могу получить всю информацию об узлах в «отношениях», но, конечно, мне нужны данные об узлах, чтобы быть основной информацией. Я не совсем понимаю, как лучше связать этот запрос с узлами.

{
  allMediaImage {
    edges {
      node {
        relationships {
          image {
            localFile {
              childImageSharp {
                fluid {
                  ...
                }
              }
            }
          }
          node__blog {
            id
          }
        }
      }
    }
  }
}

Я надеюсь, что смогу создать JSON другим способом, возможно, чтобы упростить доступ к изображениям. В противном случае способ сначала получить идентификатор узла, а затем использовать его для выбора подходящего носителя. Любые идеи

1 Ответ

1 голос
/ 20 апреля 2019

Похоже, вы уже разобрались. Но я публикую ответ для всех, кто пытается это выяснить.

Использование узлов Drupal с Gatsby требует от вас углубления во взаимосвязи между узлами и медиа-объектами, , а затем - во взаимосвязи между медиа-объектами и файлами.

Я использую простую установку Drupal 8.6.15 с включенным ядром Media и (экспериментальной) Media Library. И я добавил медиа-поле (ссылка на изображение) с именем Изображение актива (я удалил обычное поле Изображение ) в свой тип содержимого Article .

Вот так выглядит мой запрос к GraphQL ...

query ArticleQuery{
  allNodeArticle {
    edges {
      node {
        # Use the node ID for the key in GatsbyJS
        drupal_internal__nid
        # Access the Article's text info
        created(formatString: "DD MMMM YYYY")
        title
        body {
          value
          summary
        }
        # Here is where I access the Image Asset field
        relationships {
          field_image_asset {
            relationships {
              field_media_image {
                localFile {
                  childImageSharp {
                    fluid(maxWidth:1200) {
                      ...GatsbyImageSharpFluid
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
...