twig recipes2016.drupalcorn.org/sites/default/files/slides/twig recipies...twig recipes making...

59
Twig Recipes Making Drupal 8 Render the Markup You Want http://bit.ly/twig-recipes

Upload: dangngoc

Post on 07-Jun-2018

247 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Twig RecipesMaking Drupal 8 Render the Markup You Want

http://bit.ly/twig-recipes

Page 2: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Mauricio Dinarte

@dinarcon

[email protected]

https://www.drupal.org/u/dinarcon

Page 3: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Drupal Nicaragua

Page 4: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Agaric

Boston, Massachusetts

Page 5: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Themes

Page 6: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Control appearance

Page 7: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

A theme...● Defines the layout of the website

● Sets the color scheme

● Specifies the fonts to be used

● Might provide interactive user experiences

https://www.drupal.org/theme-guide/8

http://sqndr.github.io/d8-theming-guide

Page 8: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

TemplatesThey separate the presentation logic from the

business logic.

It consists of HTML markup with placeholders that

would be replaced by dynamic content.

CSS, JavaScript, and other assets are added as

needed.

Page 9: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want
Page 10: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want
Page 11: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

html.html.twig

Page 12: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

page.html.twig

Page 13: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

region.html.twig

Page 14: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

block.html.twig

Page 15: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

node.html.twig

Page 16: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Twig

Page 17: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

TwigTwig is a template engine for PHP and it is part of

the Symfony2 framework. In Drupal 8 Twig

replaces PHPTemplate as the default templating

engine.

https://www.drupal.org/theme-guide/8/twig

Page 18: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Twig Template

http://twig.sensiolabs.org/doc/templates.html

Page 19: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Variables

Page 20: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want
Page 21: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Setting Variables

Page 22: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Filters

Page 23: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Functions

Page 24: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Tests

Page 25: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Filter or Function or Test?

Filter Function Test

Requires an expression preceding it?

Yes No Yes

Can receive arguments? Yes Yes Yes

Return value Scalar Mixed Boolean

Page 26: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Control Structures

Page 27: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Control Structures

Page 28: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Overriding Drupal Markup

Page 29: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

146 templates in the

stable Core theme

Page 30: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Theme Debug

https://www.drupal.org/node/1906392

https://www.drupal.org/node/2358785

Page 31: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want
Page 32: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Template Suggestions

https://www.drupal.org/node/2354645

http://bit.ly/2aimNTu (* views templates suggestions)

Page 33: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

./core/themes/bartik/templates/node.html.twig

Page 34: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

./core/themes/bartik/templates/node.html.twig

Page 35: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

+ Rebuild caches

./themes/YOUR_THEME/templates/node.html.twig

Page 36: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want
Page 37: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

All of these are equivalent

Page 38: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Warning:

For demonstration purpose only. DO NOT subtheme Bartik.

Page 39: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Twig Recipes

Page 40: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

1. How can I pass information from Drupal to Twig?

● Modify the *.theme file.

● Implement hook_preprocess_HOOK(&$variables)

● Modify the $variables array. This is a key, value container of

information. Keys will become variables in the template.

● Print the variable in the template.

Page 41: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

1. How can I pass information from Drupal to Twig?

Page 42: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

1. How can I pass information from Drupal to Twig?

Page 43: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

2. How can I create and assign classes directly in the Twig template?● In the template itself, use set to create a variable that contains

the class name.

● Print the variable where needed.

● Usually this happen in {{ attributes.addClass(classes) }}

Page 44: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

2. How can I create and assign classes directly in the Twig template?

Page 45: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

3. How can I render image fields as background images?● Install the Image URL Formatter module.

● Configure the image field to link to use the “Image URL”

format and do not link to anything.

● Render the variable in the template.

Page 46: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

3. How can I render image fields as background images?

Page 47: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

3. How can I render image fields as background images?

Page 48: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

4. How can I render node content as HTML attributes?

File field (SVG)

Page 49: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

4. How can I render node content as HTML attributes?

Entity reference field as link

field--node--field-featured-content--feature.html.twig

Page 50: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

4. How can I render node content as HTML attributes?

Page 51: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

5. How can I conditionally render fields based on the content of other fields?

Boolean field

Page 52: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

5. How can I conditionally render fields based on the content of other fields?

Page 53: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

6. How can I use Twig filters to format numbers?

Page 54: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

7. How do I create an absolute link to a node?

Drupal Console is your friend to find routes in the system.

$ drupal router:debug | grep '/node'

$ drupal router:debug entity.node.canonical

Page 55: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Want to learn more?

Mastering Twig

by Javier Eguiluz @ DrupalCon Barcelona 2015

https://www.youtube.com/watch?v=4KfkV1T3bhE

Page 56: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Want to learn more?

Drupalnator Themestation:

Understanding Drupal 8's New Theming Layers

by Darryl Norris @ Twin Cities DrupalCamp 2016

https://www.youtube.com/watch?v=Ot--bH9379U

Page 57: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Need support?

https://drupaltwig-slack.herokuapp.com

Page 58: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Let’s continue the conversation on twitter

#DrupalTwigRecipes

Thank You!

Page 59: Twig Recipes2016.drupalcorn.org/sites/default/files/slides/Twig Recipies...Twig Recipes Making Drupal 8 Render the Markup You Want

Please Provide Feedback@dinarcon | #DrupalTwigRecipes | [email protected]

http://bit.ly/twig-recipes