Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

This module allows you to embed GraphQL queries directly within Twig templates to fetch and inject data. This eliminates the need for separate site building or preprocessing steps to make data available in your templates. It supports features like query fragment collection and automatic variable matching.

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

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
1
Tracked since
Oct 2025
Latest release
10 months ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Slowing

Releases

Version Type Core Release date
3.1.x-dev Dev 10–11 Oct 24, 2025