# Cheat sheet ## Drupal View Render a view. See [Twig Tweak and Views](./views.md) page for more information. ### Accepted parameters
$name
String - Required - The name of the view to embed.
$display_id
String - Optional - The display id to embed. Default is default.
$...
Mixed - Optional - Any additional parameters will be passed as arguments.
```twig {{ drupal_view('who_s_new', 'block_1') }} ``` Specify additional parameters which map to contextual filters you have configured in your view: ```twig {{ drupal_view('who_s_new', 'block_1', arg_1, arg_2, arg_3) }} ``` ## Drupal View Result Get the result of a view. ```twig {{ drupal_view_result('who_s_new', 'block_1') }} ``` ## Drupal Block Used to render a block. In order to figure out the plugin IDs list them using block plugin manager. With Drush, it can be done like follows: ```shell drush ev "print_r(array_keys(\Drupal::service('plugin.manager.block')->getDefinitions()));" ``` ```twig {# Print block using default configuration. #} {{ drupal_block('system_branding_block') }} {# Print block using custom configuration. #} {{ drupal_block('system_branding_block', {label: 'Branding', use_site_name: false, id}) }} {# Bypass block.html.twig theming. #} {{ drupal_block('system_branding_block', wrapper=false) }} ``` See [rendering blocks with Twig Tweak](blocks.md#block-plugin) for more details and examples. ## Drupal Region Used to render contents of a region from the default or any other specified theme. ```twig {# Print 'sidebar_first' region of the default site theme. #} {{ drupal_region('sidebar_first') }} {# Print 'sidebar_first' region of Bartik theme. #} {{ drupal_region('sidebar_first', 'bartik') }} ``` ## Drupal Entity Used to render an entity. Returns `NULL` if the entity doesn't exist. ```twig {# Print a content block which ID is 1. #} {{ drupal_entity('block_content', 1) }} {# Print a node's teaser. #} {{ drupal_entity('node', 123, 'teaser') }} {# Print Branding block which was previously disabled on #} {# admin/structure/block page. #} {{ drupal_entity('block', 'bartik_branding', check_access=false) }} ``` ## Drupal Entity Form Gets the built and processed entity form for the given entity type. ```twig {# Print edit form for node 1. #} {{ drupal_entity_form('node', 1) }} {# Print add form for 'article' content type. #} {{ drupal_entity_form('node', values={type: 'article'}) }} {# Print user register form. #} {{ drupal_entity_form('user', NULL, 'register', check_access=false) }} ``` ## Drupal Field Returns the render array for a single entity field, or `NULL` if the field value doesn't exist. ```twig {{ drupal_field('field_image', 'node', 1) }} {{ drupal_field('field_image', 'node', 1, 'teaser') }} {{ drupal_field('field_image', 'node', 1, {type: 'image_url', settings: {image_style: 'large'}}) }} ``` ## Drupal Menu Returns a render array for the specified menu. ```twig {# Print the top level of 'main' menu. #} {{ drupal_menu('main') }} {# Expand all menu links. #} {{ drupal_menu('main', expand=true) }} ``` ## Drupal Form Returns a render array to represent the form. ```twig {{ drupal_form('Drupal\\search\\Form\\SearchBlockForm') }} ``` ## Drupal Image Used to build the image. ```twig {# Render image specified by file ID. #} {{ drupal_image(123) }} {# Render image specified by file UUID. #} {{ drupal_image('9bb27144-e6b2-4847-bd24-adcc59613ec0') }} {# Render image specified by file URI. #} {{ drupal_image('public://ocean.jpg') }} {# Render image using 'thumbnail' image style and custom attributes. #} {{ drupal_image('public://ocean.jpg', 'thumbnail', {alt: 'The alternative text'|t, title: 'The title text'|t}) }} {# Render responsive image (using a named argument). #} {{ drupal_image('public://ocean.jpg', 'wide', responsive=true) }} ``` ## Drupal Token Replaces a given token with appropriate value. ```twig {{ drupal_token('site:name') }} ``` ## Drupal Config Retrieves data from a given configuration object. ```twig {{ drupal_config('system.site', 'name') }} ``` ## Drupal Dump Dumps information about variables. Alias `dd()` could be used instead of `drupal_dump()`. You need to install Symfony VarDumper component. ```twig {# Basic usage. #} {{ drupal_dump(var) }} {# Same as above but shorter. #} {{ dd(var) }} {# Dump all available variables for the current template. #} {{ dd() }} ``` ## Drupal Title Returns a title for the current route. ```twig {# The title is cached per URL. #} {{ drupal_title() }} ``` ## Drupal URL Generates and returns a URL object from an internal path or `NULL` if URL is not accessible to the user. ```twig {# Basic usage. #} {{ drupal_url('node/1') }} {# Complex URL. #} {{ drupal_url('node/1', {query: {foo: 'bar'}, fragment: 'example', absolute: true}) }} ``` ## Drupal Link Generates and returns a link object from an internal path or `NULL` if URL is not accessible to the user. ```twig {# It supports the same options as drupal_url(), plus attributes. #} {{ drupal_link('View'|t, 'node/1', {attributes: {target: '_blank'}}) }} {# This link will only be shown to the privileged users. #} {{ drupal_link('Example'|t, '/admin', check_access=true) }} ``` ## Drupal Messages Displays status messages. ```twig {{ drupal_messages() }} ``` ## Drupal Breadcrumb Builds the breadcrumb. ```twig {{ drupal_breadcrumb() }} ``` ## Drupal Breakpoint Emits a breakpoint to the debug client. ```twig {# Make Xdebug break on the specific line in the compiled Twig template. #} {{ drupal_breakpoint() }} ``` ## Contextual Links Returns a renderable array representing contextual links. ```twig {# Basic usage. #}
{{ drupal_contextual_links('entity.view.edit_form:view=frontpage:display_id=feed_1') }} {{ drupal_view('frontpage') }}
{# Multiple links. #}
{{ drupal_contextual_links('node:node=123:|block_content:block_content=123:') }} {{ content }}
``` ## Token Replace Replaces all tokens in a given string with appropriate values and returns the HTML. ```twig {# Basic usage. #} {{ '

[site:name]

[site:slogan]
'|token_replace }} {# This is more suited to large markup. #} {% apply token_replace %}

[site:name]

[site:slogan]
{% endapply %} ``` ## Preg Replace Performs a regular expression search and replace. For simple string interpolation consider using built-in replace or format Twig filters. ```twig {{ 'Drupal - community plumbing!'|preg_replace('/(Drupal)/', '$1') }} ``` For simple string interpolation consider using built-in `replace` or `format` Twig filters. ## Image Style Returns the URL of this image derivative for an original image path or URI. The returned value is the absolute URL where a style image can be downloaded, so it's suitable for use in an `` tag. Requesting the URL will cause the image to be created. ```twig {# Basic usage #} {{ 'public://images/ocean.jpg'|image_style('thumbnail') }} {# Make sure to check that the URI is valid #} {% set image_uri = node.field_media_optional_image|file_uri %} {% if image_uri is not null %} {{ image_uri|image_style('thumbnail') }} {% endif %} ``` `image_style` will trigger an error on invalid or empty URIs, to avoid broken images when used in an `` tag. ## Transliterate Transliterates text from Unicode to US-ASCII. Returns a string with non-US-ASCII characters transliterated to US-ASCII characters, and unknown characters replaced with `$unknown_character`. ```twig {{ 'Привет!'|transliterate }} ``` ## Check Markup Runs all the enabled filters on a piece of text. ```twig {{ 'bold strong'|check_markup('restricted_html') }} ``` ## Format size Generates a string representation for the given byte count. ```twig {{ 12345|format_size }} ``` ## Truncate Truncates a UTF-8-encoded string safely to a number of characters. ```twig {# Truncates a UTF-8-encoded string safely to 10 characters. #} {{ 'Some long text'|truncate(10) }} {# Same as above but with respect of words boundary. #} {{ 'Some long text'|truncate(10, true) }} ``` ## View Returns a render array for entity, field list or field item. ```twig {# Do not put these node entity examples into node.html.twig template to avoid recursion. #} {{ node|view }} {{ node|view('teaser') }} {{ node.field_image|view }} {{ node.field_image[0]|view }} {{ node.field_image|view('teaser') }} {{ node.field_image|view({settings: {image_style: 'thumbnail'}}) }} ``` ## With This filter is an opposite of core `without` filter: Adds new element to the array and returns the modified array. ```twig {# Set top-level value. #} {{ content.field_image|with('#title', 'Photo'|t) }} {# Set nested value. #} {{ content|with(['field_image', '#title'], 'Photo'|t) }} ``` ## Children Filters out the children of a render array, optionally sorted by weight. ```twig ``` ## File URI When a field item list is passed, the URI will be extracted from the first item. In order to get the URI of a specific item, specify its delta explicitly using array notation. ```twig {{ node.field_image|file_uri }} {{ node.field_image[0]|file_uri }} ``` Media fields are fully supported including OEmbed resources, in which case it will return the URL to the resource, similar to the `file_url` filter. ```twig {{ node.field_media|file_uri }} ``` Useful to apply the `image_style` filter to Media fields. (Remember to check whether a URI is actually returned.) ```twig {% set media_uri = node.field_media|file_uri %} {% if media_uri is not null %} {{ media_uri|image_style('thumbnail') }} {% endif %} ``` ## File URL For string arguments it works similar to core [`file_url()`](https://www.drupal.org/docs/theming-drupal/twig-in-drupal/functions-in-twig-templates#s-file-urluri) Twig function. ```twig {{ 'public://sea.jpg'|file_url }} ``` In order to generate absolute URL set "relative" parameter to `false`. ```twig {{ 'public://sea.jpg'|file_url(false) }} ``` When a field item list is passed, the URL will be extracted from the first item. In order to get the URL of a specific item, specify its delta explicitly using array notation. ```twig {{ node.field_image|file_url }} {{ node.field_image[0]|file_url }} ``` Media fields are fully supported including OEmbed resources. ```twig {{ node.field_media|file_url }} ``` It is also possible to extract file URL directly from an entity. ```twig {{ image|file_url }} {{ media|file_url }} ``` ## Entity URL Gets the URL object for the entity. See \Drupal\Core\Entity\EntityInterface::toUrl() ```twig {# Creates canonical URL for the node. #} {{ node|entity_url }} {# Creates URL for the node edit form. #} {{ node|entity_url('edit-form') }} ``` ## Entity Link Generates the HTML for a link to this entity. See \Drupal\Core\Entity\EntityInterface::toLink() ```twig {# Creates a link to the node using the node's label. #} {{ node|entity_link }} {# Creates link to node comment form. #} {{ node|entity_link('Add new comment'|t, 'canonical', {fragment: 'comment-form'}) }} ``` ## Entity translation That is typically needed when printing data from referenced entities. ```twig {{ media|translation.title|view }} ``` ## Cache metadata When using raw values from entities or render arrays it is essential to ensure that cache metadata are bubbled up. ```twig Logo {{ content.field_media|cache_metadata }} ``` ## PHP PHP filter is disabled by default. You can enable it in `settings.php` file as follows: ```php $settings['twig_tweak_enable_php_filter'] = TRUE; ``` ```twig {{ 'return date('Y');'|php }} ``` Using PHP filter is discouraged as it may cause security implications. In fact, it is very rarely needed. The above code can be replaced with the following. ```twig {{ 'now'|date('Y') }} ```