Final version of Emulsify Twig - use Emulsify Tools
Note: The 5.x version is last supported version of Emulsify Twig that will work with Drupal 10 and 11 only. Support for Drupal 9 has been dropped. The replacement for this module is Emulsify Tools where development will continue.
All work on this project is done on Github
Visit emulsify-ds/emulsify_twig to log issues and contribute.
Documentation can be found at https://docs.emulsify.info
More information at https://emulsify.info
This module provides two Twig extensions used in the Emulsify Design System.
Usage
BEM Twig Extension
Twig function that inserts static classes into Pattern Lab and adds them to the Attributes object in Drupal
Simple block name (required argument):
<h1 {{ bem('title') }}>
This creates:
<h1 class="title">
Block with modifiers (optional array allowing multiple modifiers):
<h1 {{ bem('title', ['small', 'red']) }}>
This creates:
<h1 class="title title--small title--red">
Element with modifiers and blockname (optional):
<h1 {{ bem('title', ['small', 'red'], 'card') }}>
This creates:
<h1 class="card__title card__title--small card__title--red">
Element with blockname, but no modifiers (optional):
<h1 {{ bem('title', '', 'card') }}>
This creates:
<h1 class="card__title">
Element with modifiers, blockname and extra classes (optional - in case you need non-BEM classes):
<h1 {{ bem('title', ['small', 'red'], 'card', ['js-click', 'something-else']) }}>
This creates:
<h1 class="card__title card__title--small card__title--red js-click something-else">
Element with extra classes only (optional):
<h1 {{ bem('title', '', '', ['js-click']) }}>
This creates:
<h1 class="title js-click">
Add Attributes Twig Extension
Twig function that merges with template level attributes in Drupal and prevents them from trickling down into includes.
{% set additional_attributes = {
"class": ["foo", "bar"],
"baz": ["foobar", "goobar"],
"foobaz": "goobaz",
} %}
<div {{ add_attributes(additional_attributes) }}></div>
Can also be used with the BEM Function:
{% set additional_attributes = {
"class": bem("foo", ["bar", "baz"], "foobar"),
} %}
<div {{ add_attributes(additional_attributes) }}></div>
Project information
Minimally maintained
Maintainers monitor issues, but fast responses are not guaranteed.No further development
No longer developed by its maintainers.5,650 sites report using this module
- Created by evanmwillhite on , updated
Stable releases for this project are covered by the security advisory policy.
Look for the shield icon below.
Releases
Drupal 11 support and fix for context attributes







