Samuli Natri
Aug. 24, 2016
Updated: Oct. 23, 2016
0
By Samuli NatriAug. 24, 2016
(Updated: Oct. 23, 2016)
0

Drupal 8 Tutorial #43 : Twig Tweak Module (Article + Video)

Twig Tweak module adds some useful functions and filters to use in templates.

How to install it?

drush -y en twig_tweak

How to use it?

Print views in templates

{{ drupal_view('latest_posts', 'default') }}

You can use arguments:

{{ drupal_view('latest_posts', 'default', '81,60') }}

latest_posts

View machine name.

default

Display ID (default, block_1 etc).

81,60

(optional) Arguments. Example: add an ID contextual filter to the view and you can limit the view results for only selected nodes (81 and 60 in this case).

Note: this function uses Views Embed View function that doesn't display the title of the view. You can print it manually above the view or use the drupal_block function below (if you don't use arguments).

Print blocks in templates

{{ drupal_block('mytheme_search') }}

mytheme_search

The machine name of the block.

Print tokens in templates

{{ drupal_token('site:name') }}

Example tokens:

site:name

Site name.

site:slogan

Site slogan.

current-date:long

Current date in long format

Note: you can install Token module to see all available tokens in here: admin/help/token.

Token module

Use token_replace filter to print out multiple tokens at once:

{{ '[site:name] [current-date:long]' | token_replace | raw }}

[site:name] [current-date:long]

The tokens.

token_replace

The filter.

raw

I had to use this filter for the HTML tags to show up right.

You can also access configuration data with drupal_config:

{{ drupal_config('system.site', 'name') }

PHP filter

{{ 'return date("Y d m");' | php }}

Note: allowing PHP like this in templates can create security holes and perfomance issues. Read more about the PHP Filter module:

Search and replace with regular expressions

{{ 'some text' | preg_replace('some', 'other') | raw }}

This replaces the word some with other.

some text

The text to apply search and replace.

some

The text to look for.

other

The replacement.

raw

I had to use raw filter to make it work.

Render entities

Note: at this moment (2016.08.24) with the stable version: 8.x-1.2 this function seemed to get stuck in a loading screen.

This will render the whole node:

{{ drupal_entity('node', 1) }}

This will render the teaser:

{{ drupal_entity('node', 1, 'teaser') }}

This will render the current node:

{{ drupal_entity('node', NULL, 'teaser') }}

node

The entity type.

1

Entity ID.

teaser

The view mode.

Check the video to see it in action

In the video I also use Bootstrap to divide node content into two columns and show Recent Posts view next to the body field.

Sources & links:
Module page: https://www.drupal.org/project/twig_tweak
Issue queue: https://www.drupal.org/project/issues/twig_tweak?status=All&categories=All
Documentation: http://cgit.drupalcode.org/twig_tweak/tree/src/TwigExtension.php

Samuli Natri is the founder of WDTutorials.com. He started building Drupal sites in 2010 with Drupal 6. He attended Helsinki University and Helsinki University of Technology (Social Sciences and Computer Science). Read more...

Add new comment