things! preprocess all the2018.drupalcorn.org/sites/default/files/preprocess all the...

Post on 08-Aug-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Preprocess All The Things!

Chris Wright@redbrickoneWorks for: CodeKoalas

Slides and info attaco.ist

Preprocess Functions

- What they do- How to use them- Helpful tools and tips to make your life easier

Privacy Policy

What are preprocess functions?

- Set up variables to be placed in a template- Change how content is rendered- Change what information is served up to the page- Add custom logic before it hits the page

Turn on Debugging

In /sites/default/services.yml, modify under Twig: debug:false to be debug:true

Turn on Debugging

This will now show templating suggestions and theme_hooks in comments throughout the html of your site

Useful Links:https://www.drupal.org/docs/8/theming/twig/locating-template-files-with-debugginghttps://www.drupal.org/docs/8/theming/twig/discovering-and-inspecting-variables-in-twig-templates

Theme Debug

Theme Debug

Theme Debug

Template.php?

D8: themename.theme file rather than a template.php file as in D7

Try to keep logic in .theme file and out of your templates

Preprocess Function format

function themename_preprocess_HOOK(&$variables) {}

HOOK is the element you wish to preprocess

Preprocess basic things like nodes, pages, etc or get more in depth and preprocess fields, exposed filters or even forms

Use debugging to find the specific theme_hook to use

Preprocess radio button exposed filter

Find the theme_hook - bef_radios

function themename_preprocess_bef_radios(&$variables) {}

Viewing Variables

- Devel Module- kint()- ksm() (similar to dpm)

- Xdebug

Devel module functions

- kint($variables);- ksm($variables);- Clear the cache- Navigate to the page- Profit

KintKsm

KintKsm

Xdebug

- Add a breakpoint inside your function- Clear cache- Run Xdebug- Navigate to the page- Profit

Setting up Xdebug? Not that crazy

https://joshfabean.com/blog/xdebug/

Add Classes to element or wrapper

Add or modify classes inside $variables[‘classes_array”]

Add Classes to element or wrapper

Add exposed filter titles to wrapper classes

Preprocess a Field

Add Javascript to a Block

Renderable Arrays

- Creating them- Calling / using them in the twig template- Why you would use them

Useful Links:https://www.drupal.org/docs/8/api/render-api/render-arrayshttps://api.drupal.org/api/drupal/core!lib!Drupal!Core!Render!theme.api.php/group/theme_render/8.2.x

Renderable Array

Renderable Array

Renderable Array - Twig

Theming Template Suggestions

- Allows you to add a specific template naming suggestion format - Can be used globally or for specific use cases- hook_theme_suggestions_HOOK_alter

Useful Links:https://www.drupal.org/docs/8/theming/twig/working-with-twig-templateshttps://www.drupal.org/docs/8/theming/twig/twig-template-naming-conventionshttps://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21theme.api.php/function/hook_theme_suggestions_alter/8

Theming Template Suggestions

Twig

- Variables will be called by their associative key “$variables[‘footer’]” will be called “footer” in twig

- If thrown inside content - $variables[‘content’][‘footer’], you will use dot notation i.e. content.footer

- Can use if checks in twig {% if content.footer %}, etc

Modifying Forms

- Add a link to a form- Be careful not to leave new form items vulnerable to XSS attack

Modifying Forms

Preprocess All The Things!

- What they do- How to use them- Helpful tools and tips to make your life easier

Tacos?

- Taco Joint

- Torchys

- Papasito’s

top related