Drupal and the New Front-end Workflow

Michael Potter

@hey__MP

Why is Drupal theming hard?

Front-end devs have 99 problems...

...but three big ones

1. Semantic markup is hard

2. Responsive is really hard

3. Accessibility is really !*@&ing hard

Why is theming in Drupal hard?

  • Standard Drupal markup
  • Opinionated base themes
  • Layout managed in database
  • No cool front-end tools!

Traditional workflow

  • Get a Photoshop comp
  • Create a new content types
  • Add a bunch of fields
  • Download Display Suite / Panels
  • Spend the next week of your life in style.css

And then these things came along...

currently showing 8 of 3,190,398,844 frameworks

Where do they get those wonderful toys?

What does Google recommend?

Yeah but Drupal can't do all that right?

What if I told you

you can use front-end best practices in Drupal?

YOLO!

New methodology

  • Start statically
  • Create reusable design components
  • Automate as much as possible
  • Handcraft as much HTML as possible

Rapid prototyping

  • We start writing HTML and CSS as soon as possible to create an HTML Prototype
  • Photoshop and Illustrator used to inform the HTML Prototype, not to create comps
  • Team members should have real time access to the prototype for iterative feedback

From Phase2 The New Design Workflow Drupalcon LA 2015

https://events.drupal.org/losangeles2015/sessions/new-design-workflow

Lets see this in action

It starts with an idea

quickly moves to a prototype

HTML Prototype

Lets talk automation

Front-end tools

  • Automation tools that allow us to produce HTML / CSS / JS extremely quickly
  • Utilize frameworks and mixins that help you work quickly (front-end stacks, grids, animations, your own)
  • This will be your new best friend! Know it inside and out.

Get up and running quickly

Style Guide

Style guide

  • Library of design components
  • As we build components we need to document how they can be used throughout the site
  • Makes implementation easier
  • Maintains consistency

adding a component to the style guide

Style guide generators

Moving into Drupal

Steps to moving into Drupal

  • Add CSS and JS files
  • Start moving our custom HTML to tpl files
  • Use template.php to alter variables and render arrays
  • Utilize view modes to display different design components

Adding our files

Moving into page.tpl

Adding template variables

Adding template variables

Adding template variables

Adding regions

Customizing a block example

Customizing a block example

Add an override template file

block—listserv—listserv-subscribe.tpl

Customizing a block example

Add a hook_form_alter to adjust the markup of the submit button

Customizing a block example

Perfecto!

ELMS Learning Network and the new front-end workflow

ELMSLN workflow

  • HTML prototype on codepen.io
  • Collaborate on Github
  • Create view modes for component variations
  • Move prototype into Drupal
  • Add component to styleguide
  • Deploy....

HTML Prototype

HTML Prototype

HTML Prototype

Create new design component statically

Collaborate and Discuss

Post new issue on Github

Add component to style guide

Add custom view modes

View mode for each variation

Move into Drupal

Override node--inherit--card.tpl

Move into Drupal

Components as

view modes

Components as

view modes

  • Each view mode represents a design component variation
  • We can offer design options to our content creators while maintaining control over markup

Components as view modes

moving from prototype to node--article--teaser.tpl

Components as view modes in ELMSLN

Using view_mode_tab

Benefit of components as view modes

  • Design components are highly reusable
  • Can change markup retroactively!
  • Content contribs still have options
  • We just won battle for the body field!

How do I get view modes into my content?

Helpful Drupal modules

  • Makes having lots of view modes manageable
  • Generate custom template suggestions and preprocess functions easily

Inherit Display example

template_node__inherit__image() alter variables for the following templates

  • image.tpl
  • image__left.tpl
  • image__left__lightboxed.tpl
  • image__right.tpl
  • image__right__lightboxed.tpl

template_node__inherit__image__left() alter variables for the following templates

  • image__left.tpl
  • image__left__lightboxed.tpl

Inherit Display

inherit display settings from parent's view mode

Inherit Display

Demo

Optionally override core and contrib CSS/JS files

Gives you a preview page of common Drupal elements

 Gives you granular control over labels and field wrappers in your view 

  • Adds classes to components based on field values
  • Helpful if you don't want to create new view modes for every components variation

Thank you!

Title Text

Drupal and the New Front-end Workflow

By heymp

Drupal and the New Front-end Workflow

  • 1,634