Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

graphql_twig

171 sites Security covered
View on drupal.org

The GraphQL Twig module allows you to inject data into Twig templates by simply adding a GraphQL query. No site building or pre-processing necessary.

Simple example

The "Powered by Drupal" block only gives credit to Drupal, but what's a website without administrators and users? Right. Lets fix that.

Place the following template override for the "Powered by Drupal" block in your theme:

{#graphql
query {
  admin:userById(id: "1") {
    uid
    name
  }
  user:currentUserContext {
    uid
  }
}
#}

{% extends '@bartik/block.html.twig' %}
{% block content %}
  {% set admin = graphql.admin %}
  {% set user = graphql.user %}
  <div{{ content_attributes.addClass('content') }}>
    {{ content }} and
      {% if user.uid == admin.uid %}
        you, {{ admin.name }}.
      {% else %}
        you, appreciated anonymous visitor.
      {% endif %}
  </div>
{% endblock %}


For the sake of an example, we assumed that you based your theme on Bartik (which you probably didn't), but what else happens here? In the {#graphql ... #} comment block we annotated a simple GraphQL query, that will be executed in an additional preprocessing step, to populate your template with an additional variable called graphql that will contain the result. We injected additional information into our template. without the need to fall back to site building or manual preprocessing.

This is the basic concept of GraphQL in Twig. Additionally it will collect query fragments from included templates, automatically try to match template variables to query arguments and enable you to tap into all features of the Drupal GraphQL module.

More documentation coming soon!

Compatibly

As the GraphQL project created version 3.x & 4.x which differ greatly this project has been split into two versions:

GraphQL Twig 3.x

This version is Drupal 9/10 Ready & compatible with GraphQL 3.x

GraphQL Twig 4.x

This version is Drupal 9/10 Ready & compatible with GraphQL 4.x

Activity

Total releases
1
First release
Oct 2025
Latest release
5 months ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
3.1.x-dev Dev Oct 24, 2025