Block Twig Drupal 8
To pass custom variables to twig file in drupal 8, you must create a preprocess function, for the template:
Default theme implementation for a field. To override output, copy the 'field.html.twig' from the templates directory to your theme's directory and customize it, just like customizing other Drupal templates such as page.html.twig or node.html.twig. Instead of overriding the theming for all fields, you can also just override theming for a subset of fields using Theme hook suggestions.
- Drupal 8 In Drupal 8, Twig allows you to eloquently extend a template and only change the part that you need. The rest of the code remains in the parent template. There is no code duplication!
- Mar 22, 2014 An Introduction to Twig in Drupal 8 Themes PHPTemplate is the engine that has been driving Drupal templates since 2005. After nearly 10 years of honorable service, PHPTemplate is about to be replaced by Twig in Drupal 8. This will be the biggest overhaul of Drupal theming in a decade.
to print variable in twig file just use {{ my_variable }}.
Example how to pass variables to node twig file:
Example how to pass variables to page twig file:
Example how to pass variables to region twig file:
Example how to pass variables to menu twig file:
Example how to pass variables to links twig file:
Example how to pass variables to views view unformatted twig file (views-view-unformatted.html.twig):
Example how to pass variables to block twig file (block.html.twig):
Example how to pass current language variable to select twig file (select.html.twig):
Example how to pass variable to menu twig file (menu.html.twig):
function rma_preprocess_block(&$variables) {
global $base_url;
Drupal 8 Theme Debug
$variables['base_path'] = $base_url;
}
Drupal 8 brings us except Symfony in backend also Twig for frontenders and Views for sitebuilders. Have you every thought about mixing this two parts of Drupal? In most of cases it is better if frontender knows at least basics of Drupal sitebuilding and Views are one of the most important modules for this.
Twig
Twig is templating engine which replaced PHPTemplates in Drupal 8. It uses some own functions, filters and syntax which aren't related to PHP or Javascript and more importantly, it protects you from complexity of Drupal data model. No more thinking if variable is array or object - you access its children the same way. These functions and filters, which modify way how are input variables displayed. Drupal also extends Twig abilities by adding some own functions, mostly related to manipulation with html attributes. More about Twig should be found on this page and in Drupal change records.
Views
Views is module, which knows probably everyone in Drupal world and honestly I cannot imagine building even simple presentation website without it. It offers you ability to build complex queries and display their results without having any knowledge about databases just through Drupal UI.
Using Twig functions filters in Views
Usecase: You want to display some text all uppercase and you don't want to do it in CSS.
Drupal 7 solution: You can create field template with correct name, so it will have an effect only on desired field and inside this field template you will use strtoupper
PHP function.
Drupal 8 solution: You will rewrite field with its own value and use upper
Twig filter. It will look this way:
More advanced Twig expressions
Usecase: Show content of field conditionally or conditionally show content one of two fields.
Drupal 7 solution: Preprocessing or some naughty things in templates.
Drupal 8 Requirements
Drupal 8 solution: Use Twig expressions :)
Block Twig Drupal 8
To pass custom variables to twig file in drupal 8, you must create a preprocess function, for the template:
Default theme implementation for a field. To override output, copy the 'field.html.twig' from the templates directory to your theme's directory and customize it, just like customizing other Drupal templates such as page.html.twig or node.html.twig. Instead of overriding the theming for all fields, you can also just override theming for a subset of fields using Theme hook suggestions.
- Drupal 8 In Drupal 8, Twig allows you to eloquently extend a template and only change the part that you need. The rest of the code remains in the parent template. There is no code duplication!
- Mar 22, 2014 An Introduction to Twig in Drupal 8 Themes PHPTemplate is the engine that has been driving Drupal templates since 2005. After nearly 10 years of honorable service, PHPTemplate is about to be replaced by Twig in Drupal 8. This will be the biggest overhaul of Drupal theming in a decade.
to print variable in twig file just use {{ my_variable }}.
Example how to pass variables to node twig file:
Example how to pass variables to page twig file:
Example how to pass variables to region twig file:
Example how to pass variables to menu twig file:
Example how to pass variables to links twig file:
Example how to pass variables to views view unformatted twig file (views-view-unformatted.html.twig):
Example how to pass variables to block twig file (block.html.twig):
Example how to pass current language variable to select twig file (select.html.twig):
Example how to pass variable to menu twig file (menu.html.twig):
function rma_preprocess_block(&$variables) {
global $base_url;
Drupal 8 Theme Debug
$variables['base_path'] = $base_url;
}
Drupal 8 brings us except Symfony in backend also Twig for frontenders and Views for sitebuilders. Have you every thought about mixing this two parts of Drupal? In most of cases it is better if frontender knows at least basics of Drupal sitebuilding and Views are one of the most important modules for this.
Twig
Twig is templating engine which replaced PHPTemplates in Drupal 8. It uses some own functions, filters and syntax which aren't related to PHP or Javascript and more importantly, it protects you from complexity of Drupal data model. No more thinking if variable is array or object - you access its children the same way. These functions and filters, which modify way how are input variables displayed. Drupal also extends Twig abilities by adding some own functions, mostly related to manipulation with html attributes. More about Twig should be found on this page and in Drupal change records.
Views
Views is module, which knows probably everyone in Drupal world and honestly I cannot imagine building even simple presentation website without it. It offers you ability to build complex queries and display their results without having any knowledge about databases just through Drupal UI.
Using Twig functions filters in Views
Usecase: You want to display some text all uppercase and you don't want to do it in CSS.
Drupal 7 solution: You can create field template with correct name, so it will have an effect only on desired field and inside this field template you will use strtoupper
PHP function.
Drupal 8 solution: You will rewrite field with its own value and use upper
Twig filter. It will look this way:
More advanced Twig expressions
Usecase: Show content of field conditionally or conditionally show content one of two fields.
Drupal 7 solution: Preprocessing or some naughty things in templates.
Drupal 8 Requirements
Drupal 8 solution: Use Twig expressions :)
Conclusion
Drupal Twig Link
Twig makes Frontender's life easier. I'm not saying that we should do everything possible only through UI, as I see there many risks related to harder debugging. Practical use on projects will show us the best way.