SlideShare a Scribd company logo
From Prototype to Drupal
by Andrew Ivasiv
Senior Front-End Developer @ Lemberg
Why prototype?
● Tight timeline and deadline
● Get Front-End involved earlier
● Quickly piece together a
responsive website
What’s the idea?
● Modularity approach (Atomic Design)
● Independent Front-End Development
● Easy-to-use
How it works?
Static Website Generator
Jekyll
GitBook
Hexo
Hugo
Octopress
PelicanBrunch
Middleman
Metalsmith
Harp
Expose
Assemble
Docpad
Gatsby
CactusLektor
Roots
Nanoc Hyde Punch
Sculpin
Phenomic
simple
Blacksmith
Cryogen
Gor
Couscous
Frog
Webby
Spress
`From Prototype to Drupal` by Andrew Ivasiv
Layouts
_layouts/default.html
<!DOCTYPE html>
<html>
{% include head.html %}
<body>
<div class="page-wrap">
{% include header.html %}
<main role="main">
<div class="content-area">
<div class="region-content">
{{ content }}
</div>
</div>
</main>
{% include footer.html %}
</div>
</body>
</html>
YAML Front Matter
---
layout: post
title: "Welcome to Jekyll!"
date: 2016-04-01 18:11:13
categories: event
---
_layouts/post.html
---
layout: default
---
{% assign nodeClasses = "" | split:"|" %}
{% for category in page.categories %}
{% assign nodeType = category | prepend: ' node-type-' %}
{% assign nodeClasses = nodeClasses | push: nodeType %}
{% endfor %}
<article class="node{{ nodeClasses }}">
<h2 class="node-title">{{ page.title }}</h2>
<div class="content">
{{ content }}
</div>
</article>
Components
Breadcrumbs
Progress bar
Messages
Pager
Tabs
Table
Buttons
Form elements
_includes/components/button.html
{% if include.type %}
{% assign type = include.type %}
{%else%}
{% assign type = 'primary' %}
{% endif %}
{% if include.button %}
{% assign button = include.button %}
{%endif%}
<a href="#" class="button button-{{type}}">{{button}}</a>
Buttons
---
layout: component
title: Buttons
weight: 10
---
{% include components/button.html type='primary' button='Save'%}
{% include components/button.html type='secondary' button='Cancel'%}
{% include components/button.html type='tertiary' button='Remove'%}
_includes/components/breadcrumbs.html
<div id="breadcrumb">
<div class="breadcrumb">
<a href="/">Home</a>
{% capture page_url_without_index_html %}{{ page.url | remove: "/index.html" }}{% endcapture %}
{% assign splitted_url_parts = page_url_without_index_html | split: '/' %}
{% capture forLoopMaxInt %}{{ splitted_url_parts.size | minus: 2 }}{% endcapture %}
{% for i in (1..forLoopMaxInt) %}
{% capture current_breadcrumb_url %}{{next_prepender}}/{{ splitted_url_parts[i] }}/{% endcapture %}
{% capture next_prepender %}{{next_prepender}}/{{ splitted_url_parts[i] }}{% endcapture %}
<a href="{{ current_breadcrumb_url }}" class="active-trail">{{ splitted_url_parts[i] }}</a>
{% endfor %}
{{ page.title }}
</div>
</div>
Form Input
{% include components/form-elements/form-input.html type='checkbox' id_prefix='checkbox' number=2
label='Checkboxes' inline=true description=true %}
{% include components/form-elements/form-input.html type='submit' button='Save' cancel=true %}
Type - type of input field (text, checkbox, radio, file, password, submit)
Number - number of fields to be printed out on the page
Id prefix - ID prefix for checkbox/radio input fields
Label - label title for multiple fields wrapper
Description - prints out field's description (boolean)
Inline - prints out multiple fields in line (boolean)
Button - sets the title of the Submit button
Cancel - adds a Cancel button next to the Submit button
Output
<div class="form-item form-type-checkboxes">
<label>Checkboxes</label>
<div class="form-checkboxes container-inline">
<div class="form-item form-type-checkbox form-item-checkbox">
<input type="checkbox" id="checkbox1" name="checkbox" class="form-checkbox">
<label class="option" for="checkbox1">Checkbox 1</label>
</div>
<div class="form-item form-type-checkbox form-item-checkbox">
<input type="checkbox" id="checkbox2" name="checkbox" class="form-checkbox">
<label class="option" for="checkbox2">Checkbox 2</label>
</div>
</div>
<div class="description">Vivamus mollis, metus nec tincidunt venenatis, risus odio sodales risus</div>
</div>
<div class="form-actions form-wrapper">
<input type="submit" name="op" value="Confirm" class="form-submit">
<a href="/" id="edit-cancel">Cancel</a>
</div>
Stylesheets, images, fonts...
Benefits
● Nearly anyone can put together a
mock-up of a new page or section
● Themes become more independent
of back-end
● Helps to keep consistency within
the project
Andrew147 @ Drupal.org
andriy.ivasiv@lemberg.co.uk

More Related Content

What's hot (20)

PPT
Desenvolvimento web com jQuery Mobile
Pablo Garrido
 
KEY
Client-side Transformations
John Boxall
 
ZIP
引き出しとしてのDjango - SoozyCon7
makoto tsuyuki
 
PPTX
Dynamic documentation - SRECON 2017
Daniel ( Danny ) ☃ Lawrence
 
PDF
Web Components and Modular CSS
Andrew Rota
 
PPTX
Jsp config implicit object
chauhankapil
 
PPT
jQuery For Beginners - jQuery Conference 2009
Ralph Whitbeck
 
TXT
My Family
juanbubuyog
 
PPTX
HTML5
Brandon Byars
 
TXT
smoke1272528461
mxsmoketest
 
PDF
Polymer, A Web Component Polyfill Library
naohito maeda
 
PDF
HTML5 Essentials
Marc Grabanski
 
PDF
High-Quality JavaScript
Marc Bächinger
 
PPTX
Client Web
Markiyan Matsekh
 
PPT
Web&java. jsp
Asya Dudnik
 
RTF
Documento
Emersonjbn
 
PDF
JAVA SCRIPT
Mohammed Hussein
 
PPT
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
جامعة القدس المفتوحة
 
PDF
Merb jQuery
Yehuda Katz
 
PPT
ملخص تقنية تصميم صفحات الويب - الوحدة الرابعة
جامعة القدس المفتوحة
 
Desenvolvimento web com jQuery Mobile
Pablo Garrido
 
Client-side Transformations
John Boxall
 
引き出しとしてのDjango - SoozyCon7
makoto tsuyuki
 
Dynamic documentation - SRECON 2017
Daniel ( Danny ) ☃ Lawrence
 
Web Components and Modular CSS
Andrew Rota
 
Jsp config implicit object
chauhankapil
 
jQuery For Beginners - jQuery Conference 2009
Ralph Whitbeck
 
My Family
juanbubuyog
 
smoke1272528461
mxsmoketest
 
Polymer, A Web Component Polyfill Library
naohito maeda
 
HTML5 Essentials
Marc Grabanski
 
High-Quality JavaScript
Marc Bächinger
 
Client Web
Markiyan Matsekh
 
Web&java. jsp
Asya Dudnik
 
Documento
Emersonjbn
 
JAVA SCRIPT
Mohammed Hussein
 
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
جامعة القدس المفتوحة
 
Merb jQuery
Yehuda Katz
 
ملخص تقنية تصميم صفحات الويب - الوحدة الرابعة
جامعة القدس المفتوحة
 

Similar to `From Prototype to Drupal` by Andrew Ivasiv (20)

PDF
Web develop in flask
Jim Yeh
 
PPT
python and web for data science prfrograminh
Rajasekhar364622
 
PDF
Boltc CMS - a really quick overview
dantleech
 
PDF
Rapid web development, the right way.
nubela
 
PDF
Creating native apps with WordPress
Marko Heijnen
 
KEY
Twig for Drupal @ Frontendunited Amsterdam 2012
Rene Bakx
 
PDF
Drupal Recipe
hernanibf
 
PPTX
Jekyll, static websites generator
Francesco Napoletano
 
PDF
An Introduction to Tornado
Gavin Roy
 
PPTX
Tornado
Cristian Andreica
 
PDF
Web development Hackathon
Al Sayed Gamal
 
PDF
TurboGears2 Pluggable Applications
Alessandro Molina
 
PDF
Jekyll - Liquid for noobs
Bruno Mendes
 
PDF
Components are the Future of the Web: It’s Going To Be Okay
FITC
 
PPTX
Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi
 
PDF
Plone Futures
Eric Steele
 
PDF
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
ZIP
Drupal Development
Jeff Eaton
 
PDF
web2py:Web development like a boss
Francisco Ribeiro
 
PDF
Turbogears2 tutorial to create mvc app
fRui Apps
 
Web develop in flask
Jim Yeh
 
python and web for data science prfrograminh
Rajasekhar364622
 
Boltc CMS - a really quick overview
dantleech
 
Rapid web development, the right way.
nubela
 
Creating native apps with WordPress
Marko Heijnen
 
Twig for Drupal @ Frontendunited Amsterdam 2012
Rene Bakx
 
Drupal Recipe
hernanibf
 
Jekyll, static websites generator
Francesco Napoletano
 
An Introduction to Tornado
Gavin Roy
 
Web development Hackathon
Al Sayed Gamal
 
TurboGears2 Pluggable Applications
Alessandro Molina
 
Jekyll - Liquid for noobs
Bruno Mendes
 
Components are the Future of the Web: It’s Going To Be Okay
FITC
 
Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi
 
Plone Futures
Eric Steele
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
Drupal Development
Jeff Eaton
 
web2py:Web development like a boss
Francisco Ribeiro
 
Turbogears2 tutorial to create mvc app
fRui Apps
 
Ad

More from Lemberg Solutions (12)

PPTX
`People Management` by Roman Paska
Lemberg Solutions
 
PDF
Connfa! Progressive web app
Lemberg Solutions
 
PDF
Common iPhone Mistakes. An Efficient Guide for QA's and iOS Developers.
Lemberg Solutions
 
PDF
Open Social
Lemberg Solutions
 
PPTX
Drupal services - Lemberg Solutions
Lemberg Solutions
 
PPTX
Connected car
Lemberg Solutions
 
PPTX
'What is iBeacon?' by Roman Malinovskyi
Lemberg Solutions
 
PDF
Drush deploy presentation by Goruachev Mikhail
Lemberg Solutions
 
PDF
Tips On Getting Everything You Can Out of Drupal Form API'
Lemberg Solutions
 
PPTX
Restful webservices
Lemberg Solutions
 
PDF
Web Portfolio
Lemberg Solutions
 
PDF
Introducing Lemberg
Lemberg Solutions
 
`People Management` by Roman Paska
Lemberg Solutions
 
Connfa! Progressive web app
Lemberg Solutions
 
Common iPhone Mistakes. An Efficient Guide for QA's and iOS Developers.
Lemberg Solutions
 
Open Social
Lemberg Solutions
 
Drupal services - Lemberg Solutions
Lemberg Solutions
 
Connected car
Lemberg Solutions
 
'What is iBeacon?' by Roman Malinovskyi
Lemberg Solutions
 
Drush deploy presentation by Goruachev Mikhail
Lemberg Solutions
 
Tips On Getting Everything You Can Out of Drupal Form API'
Lemberg Solutions
 
Restful webservices
Lemberg Solutions
 
Web Portfolio
Lemberg Solutions
 
Introducing Lemberg
Lemberg Solutions
 
Ad

Recently uploaded (16)

PPTX
Presentationexpressions You are student leader and have just come from a stud...
BENSTARBEATZ
 
PPTX
BARRIERS TO EFFECTIVE COMMUNICATION.pptx
shraddham25
 
PPTX
Food_and_Drink_Bahasa_Inggris_Kelas_5.pptx
debbystevani36
 
PPTX
presentation on legal and regulatory action
raoharsh4122001
 
PDF
Generalization predition MOOCs - Conference presentation - eMOOCs 2025
pmmorenom01
 
PDF
The Impact of Game Live Streaming on In-Game Purchases of Chinese Young Game ...
Shibaura Institute of Technology
 
PDF
Leveraging the Power of Jira Dashboard.pdf
siddharthshukla742740
 
PPTX
Pastor Bob Stewart Acts 21 07 09 2025.pptx
FamilyWorshipCenterD
 
PPTX
2025-07-06 Abraham 06 (shared slides).pptx
Dale Wells
 
PPTX
some leadership theories MBA management.pptx
rkseo19
 
PDF
Cloud Computing Service Availability.pdf
chakrirocky1
 
PPTX
STURGEON BAY WI AG PPT JULY 6 2025.pptx
FamilyWorshipCenterD
 
PPTX
Inspired by VeinSense: Supercharge Your Hackathon with Agentic AI
ShubhamSharma2528
 
PPTX
Great-Books. Powerpoint presentation. files
tamayocrisgie
 
PPTX
AI presentation for everyone in every fields
dodinhkhai1
 
PDF
The Family Secret (essence of loveliness)
Favour Biodun
 
Presentationexpressions You are student leader and have just come from a stud...
BENSTARBEATZ
 
BARRIERS TO EFFECTIVE COMMUNICATION.pptx
shraddham25
 
Food_and_Drink_Bahasa_Inggris_Kelas_5.pptx
debbystevani36
 
presentation on legal and regulatory action
raoharsh4122001
 
Generalization predition MOOCs - Conference presentation - eMOOCs 2025
pmmorenom01
 
The Impact of Game Live Streaming on In-Game Purchases of Chinese Young Game ...
Shibaura Institute of Technology
 
Leveraging the Power of Jira Dashboard.pdf
siddharthshukla742740
 
Pastor Bob Stewart Acts 21 07 09 2025.pptx
FamilyWorshipCenterD
 
2025-07-06 Abraham 06 (shared slides).pptx
Dale Wells
 
some leadership theories MBA management.pptx
rkseo19
 
Cloud Computing Service Availability.pdf
chakrirocky1
 
STURGEON BAY WI AG PPT JULY 6 2025.pptx
FamilyWorshipCenterD
 
Inspired by VeinSense: Supercharge Your Hackathon with Agentic AI
ShubhamSharma2528
 
Great-Books. Powerpoint presentation. files
tamayocrisgie
 
AI presentation for everyone in every fields
dodinhkhai1
 
The Family Secret (essence of loveliness)
Favour Biodun
 

`From Prototype to Drupal` by Andrew Ivasiv