How to install it?

1
drush -y en twig_tweak
1
{{ drupal_view('latest_posts', 'default') }}

You can use arguments:

1
{{ 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).

1
{{ drupal_block('mytheme_search') }}
mytheme_search The machine name of the block.
1
{{ 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.

Use token_replace filter to print out multiple tokens at once:

1
{{ '[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:

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

PHP filter

1
{{ '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: (https://www.drupal.org/project/php, https://www.drupal.org/documentation/modules/php, https://www.drupal.org/node/1203886)

Search and replace with regular expressions

1
{{ '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:

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

This will render the teaser:

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

This will render the current node:

1
{{ 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.

  • 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