Как получить конкретный перевод друпального узла с graphql - PullRequest
1 голос
/ 11 июня 2019

Я использую drupal 8 для создания страницы без заголовка с gatsby и graphql.

Как запросить перевод страницы?

query MyQuery {
  allNodePage {
    nodes {
      body {
        value
      }
    }
  }
}

Я хочу получить allNodePage.nodes.body.value на определенном языке.

Редактировать: Вот графическая сущность allNodePage.

enter image description here

Edit_1:

Согласно эта проблема вы можетеТолько запрашивать переводы, изменяя маршрут хоста API (/fr/jsonapi/node/page) в drupal 8.

Но в gatsby-source-drupal -plugin маршрут хоста API не изменяется во время выполнения.

Edit_2:

Я пытаюсь перевести узел страницы.Язык по умолчанию английский.Я хочу запросить немецкий перевод, который существует в drupal.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

После некоторых экспериментов я вижу, что он еще не работает с Drupal JSON API, но я получил его с модулем Drupal GraphQL. Это можно использовать с Gatsby и gatsby-source-graphql вместо gatsby-source-drupal. Запрос будет выглядеть примерно так:

{
  nodeQuery(
    filter: {
      conditions:[
        {operator: IN, field: "type", value: ["my_node_type"]},
        {operator: EQUAL, field: "langcode", value: "de"},
      ]
    }
  ) {
    entities {
      ...on NodeMyNodeType {
        entityTranslation(language: DE) {
          entityLabel
        }
      }
    }
  }
}
0 голосов
/ 12 июня 2019

Если вы хотите отфильтровать allNodePage по langcode, вы можете сделать это следующим образом:

    query MyQuery {
      allNodePage(filter: {langcode: {eq: "fr_FR"}}) {
        nodes {
          body {
            value
          }
        }
      }
    }

Конечно, вы можете использовать переменную вместо "fr_FR" вместо ее жесткого кодирования

query MyQuery($lang: String!) {
      allNodePage(filter: {link: {eq: $lang:}}) {
        nodes {
          body {
            value
          }
        }
      }
    }
...