SlideShare a Scribd company logo
Plone 5 Theming 
Unleashed 
Albert Casado 
Víctor Fernández de Alba
Albert 
• Interaction designer – IxD / UI / UX 
• New plone.org 
• Plone 5 default Barceloneta theme 
• new Plone 5 UI elements 
@albertcasado
Víctor 
• Lead web developer and IT architect 
• plone.app.multilingual 
• New plone.org 
• Plone 5 default Barceloneta theme 
• Author of Plone 3 intranets (2010, PacktPub) 
@sneridagh
Relationship 
Genweb (Plone 2.5), Genweb 3 (Plone 4), UPC.edu (Plone 3), UPC.tv (Plone 3) …
Designer-frontend developer 
• Visual designer (PS, Ai) 
• HTML/CSS expert, cross-browsing and accessibility 
• At least basic JS (jquery, integrator of other libs) 
• Knows about Plone internals and structure 
• <Knowing=“Diazo” helps />
Plone backend developer 
• Proficient Plone developer 
• Good CSS & HTML 
• Strong JS 
• Diazo and XSLT 
• Limited design capabilities and doubtful taste ;)
Plone 5 theming unleashed
New all-in-one toolbar
Toolbar markup
Friendlier Site setup 
Stay in this room: next talk Resource Registry
Rewritten UI elements
Rewritten UI elements
New markup: less Diazo 
• Updated Header 
• Updated Navigation 
• Updated Breadcrumbs 
• Updated Alerts 
• Updated Portlets 
• Updated Search 
• … 
• Just turn off Diazo adding ?diazo.off=1
Diazo off = Plone naked 
Designer, really, save this: ?diazo.off=1
/test_rendering 
All usual elements in one page
Fontello font 
Updatable with JSON file: you all can update easily to your own glyphs
We all like Bootstrap, but use Plone classes instead 
.context:extend(.btn-primary) { }
So Plone 5 is 
• HTML5 
• ARIA & WCAG 
• Responsive 
• LESS 
• Best JS ever 
• No layout tables 
• DL DT DD with pleasure! 
• Updated .pt files 
• Clever setup
Many things has been updated 
Accessibility Addons Alerts Assignments Autotabs Breadcrumbs Buttons 
Code Control panel Dashboard Document by line Dropzone Error page 
Event Folder listing Forms Fullscreen image Header Image product Login 
Mail reset Maintenance Manage portlets Members Mixins Modal Navigation 
News Pagination Pick a date Portlets Recenty modified Search results 
Sharing Site map Site nav Sortable States Strutcture Tabbing Tables 
Tablesorter Thumbs TOC Toolbar Tree Types User settings Variables Views … 
Check everything on Barceloneta
Just a recap for best practices!
Designer frontend developer 
• Learn basic rules of Diazo 
• Reuse the fine existing Plone markup 
• Understand Plone structure 
• Have in mind Plone default classnames 
• Prototype in static HTML: Prototype, prototype, prototype 
• A “vainilla” Plone site to experiment with
Plone structure 
Header 
Nav 
Breadcrumbs 
Alerts 
<main> 
Portlets 
Left 
Column 
Portlets footer 
Footer 
Portlets 
Right 
Column 
Content
Plone classes and IDs 
• .portlet .portletNews 
• .formHelp, .formControls 
• .context, .standalone, .destructive 
• .documentFirstHeading 
• #portal-column-content 
• #edit-bar
Do not create from scratch 
• Use the default Plone’s HTML before Diazoing 
• Understand Plone structure and distribution of elements, reuse it! 
• Copy/Reuse Barceloneta LESS and adapt it
Ei designer: prototype 
• If you reuse Plone structure… 
• If you reuse Plone classes… 
• If you reuse Plone elements… 
Developers will love you
Transfer prototype 
into a Diazo Theme for Plone
About prototyping 
• Prototype based on the default Plone markup as far as possible 
• Know the limits of prototyping (:after limits sitelive) 
• Start to build the theme using the prototypes as baseline
Use a package generator 
https://github.com/collective/zopeskel.diazotheme/ 
• Works with Plone 5. 
• We’ll have to add some new things, specially new resource 
registries GenericSetup .xml
Diazo 
• Use Diazo to move blocks around 
• Do easy modifications to the default markup 
• Do not forget to make space for the toolbar just 
after the <body> tag with this rule: 
<replace css:theme=“#portal-toolbar" 
css:content-children=“#edit-bar" 
css:if-not-content=“.ajax_load" 
css:if-content=".userrole-authenticated"/>
Only if strictly needed 
• Modify existing templates to match the prototypes ones 
using z3c.jbot for default viewlets, views and **portlets** 
• Only when Diazo rules turn insane or overcomplicated is 
when “jboting” is easier, quicker and hassle free
Backend features 
• Implement the backend features 
using the prototype’s markup for templates
Iterative improvement 
• Over the Diazo theme in the development site 
• Demo it to the customer frequently 
• Iterate over the feedback and bugs found
Do not forget 
• Add custom styling for standard user generated markup 
Not anymore the custom you are thinking about
Plone 5 theming unleashed
main_template 
• No longer a portal_skins resource 
• Now it’s a BrowserView 
Products/CMFPlone/browser/templates/main_template.pt 
Products/CMFPlone/browser/main_template.py
New Resource registries 
• Completely updated 
for modern frontend developing 
• Don’t want to reveal too much on them 
Spoilers 
Remember: Do not miss Rob’s and Ramon’s talk in this room after this talk
New Resource registries 
Bundles 
Plone bundle 
Barceloneta bundle 
Legacy bundle 
Resources 
plone.less plone.js 
barceloneta.plone.less 
plone-legacy.less 
plone-legacy.js 
TTW customization and overrides 
Spoiler Alert!
New Resource registries 
Spoiler Alert!
New Resource registries 
Spoiler Alert! 
manifest.cfg
Development mode 
• Compilation on browser of LESS/JS resources 
• Compilation on console via grunt watch task 
Spoiler Alert!
Production mode 
Have we said that you should assist to the 
next talk? 
Spoiler Alert!
Plone 5 
Barceloneta 
Barcelona, Catalonia
Pretty well ordered 
plonetheme > barceloneta > static > less
Why not SASS? 
• LESS is done in JS and can be compiled in browser 
• Because we decided it and we don’t care. 
• Still not convinced? https://github.com/ekryski/less2sass
Plone 5 and Barceloneta
Plone 5 theming unleashed
Deductible 
LESS 
structure 
and file naming
Just modify variables
@import "@{sitePath}/++plone++barceloneta/less/variables.plone.less"; 
Reuse Barceloneta LESS
Let’s Plone a bit
Thanks / Gràcies 
@albertcasado 
@sneridagh

More Related Content

PPTX
Diazo: Bridging Designers and Programmers
PPTX
5 things STILL! TOO! HARD! in Plone 5
PDF
Plone 5 theming
ODP
Plone for python programmers
ODP
TTW FTW: Plone as the new wordpress
PPTX
Untangling spring week4
PPTX
Untangling spring week5
PDF
Jetpack SDK: The new possibility of the extensions on browser
Diazo: Bridging Designers and Programmers
5 things STILL! TOO! HARD! in Plone 5
Plone 5 theming
Plone for python programmers
TTW FTW: Plone as the new wordpress
Untangling spring week4
Untangling spring week5
Jetpack SDK: The new possibility of the extensions on browser

What's hot (20)

PPTX
Untangling spring week10
PDF
MozTW Jetpack Workshop: Taichung
ODP
Pyramid Lighter/Faster/Better web apps
PPTX
Untangling spring week11
PPTX
Untangling the web - fall2017 - class 4
PPTX
Joomla! Pizza Bugs and Fun 2014 pre-event Seminar
PDF
Best Practice Site Architecture in Drupal 8
PPTX
Untangling the web9
PDF
Internationalizing The New York Times
PPTX
Untangling spring week7
ODP
New Technologies demoed at the 2011 Plone Conference
PPTX
Untangling fall2017 week1
PPTX
Develop advance joomla! MVC Component for version 3
PDF
Drupal Flyover, CMS Expo
PPTX
Blazor - .NET in the Browser!
PDF
Drupal Camp LA 2011: Typography modules for Drupal
PPTX
Extension developer secrets - How to make money with Joomla
PPTX
Untangling spring week12
PPTX
Untangling spring week6
PDF
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Untangling spring week10
MozTW Jetpack Workshop: Taichung
Pyramid Lighter/Faster/Better web apps
Untangling spring week11
Untangling the web - fall2017 - class 4
Joomla! Pizza Bugs and Fun 2014 pre-event Seminar
Best Practice Site Architecture in Drupal 8
Untangling the web9
Internationalizing The New York Times
Untangling spring week7
New Technologies demoed at the 2011 Plone Conference
Untangling fall2017 week1
Develop advance joomla! MVC Component for version 3
Drupal Flyover, CMS Expo
Blazor - .NET in the Browser!
Drupal Camp LA 2011: Typography modules for Drupal
Extension developer secrets - How to make money with Joomla
Untangling spring week12
Untangling spring week6
Philipp Von Weitershausen Plone Age Mammoths, Sabers And Caveen Cant The...
Ad

Similar to Plone 5 theming unleashed (20)

PDF
Plone 5 theming
PPTX
Automation in Drupal
PDF
Plone Futures
PDF
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
PDF
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
PDF
presentation
PDF
Add-On Development: EE Expects that Every Developer will do his Duty
PDF
Add-On Development: EE Expects that Every Developer will do his Duty
PDF
presentation
PDF
Modernize Plone's Classic UI
PDF
Alternative Approach to Plone Theming (PyConWeb 2019)
PPTX
Atlanta Drupal User Group (ADUG)
PDF
Modernize Plone's Classic UI
PDF
Drupal Presentation for CapitalCamp 2011: Features Driven Development
PDF
Java for XPages Development
PDF
Drupal 8 - Build Week Update
PPTX
full-site-editing-theme-presentation.pptx
PDF
Pharo 11: A stabilization release
PPTX
Top 8 Improvements in Drupal 8
KEY
Eric Steele – World Plone Day 2010 – Plone 4 Overview
Plone 5 theming
Automation in Drupal
Plone Futures
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
presentation
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
presentation
Modernize Plone's Classic UI
Alternative Approach to Plone Theming (PyConWeb 2019)
Atlanta Drupal User Group (ADUG)
Modernize Plone's Classic UI
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Java for XPages Development
Drupal 8 - Build Week Update
full-site-editing-theme-presentation.pptx
Pharo 11: A stabilization release
Top 8 Improvements in Drupal 8
Eric Steele – World Plone Day 2010 – Plone 4 Overview
Ad

More from sneridagh (6)

PDF
Meet Quanta - Plone's Style Guide
PDF
MAX: Realtime messaging and activity stream engine
PPTX
Key factors of the content management
PPTX
Factors claus de la gestió de continguts
PDF
Introduction to Pyramid
PDF
Arquitectura de serveis per aplicacions mòbils
Meet Quanta - Plone's Style Guide
MAX: Realtime messaging and activity stream engine
Key factors of the content management
Factors claus de la gestió de continguts
Introduction to Pyramid
Arquitectura de serveis per aplicacions mòbils

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Encapsulation theory and applications.pdf
PPTX
Cloud computing and distributed systems.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Big Data Technologies - Introduction.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Electronic commerce courselecture one. Pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
MYSQL Presentation for SQL database connectivity
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Understanding_Digital_Forensics_Presentation.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
sap open course for s4hana steps from ECC to s4
20250228 LYD VKU AI Blended-Learning.pptx
Encapsulation theory and applications.pdf
Cloud computing and distributed systems.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation_ Review paper, used for researhc scholars
Big Data Technologies - Introduction.pptx
Spectral efficient network and resource selection model in 5G networks
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Electronic commerce courselecture one. Pdf

Plone 5 theming unleashed

  • 1. Plone 5 Theming Unleashed Albert Casado Víctor Fernández de Alba
  • 2. Albert • Interaction designer – IxD / UI / UX • New plone.org • Plone 5 default Barceloneta theme • new Plone 5 UI elements @albertcasado
  • 3. Víctor • Lead web developer and IT architect • plone.app.multilingual • New plone.org • Plone 5 default Barceloneta theme • Author of Plone 3 intranets (2010, PacktPub) @sneridagh
  • 4. Relationship Genweb (Plone 2.5), Genweb 3 (Plone 4), UPC.edu (Plone 3), UPC.tv (Plone 3) …
  • 5. Designer-frontend developer • Visual designer (PS, Ai) • HTML/CSS expert, cross-browsing and accessibility • At least basic JS (jquery, integrator of other libs) • Knows about Plone internals and structure • <Knowing=“Diazo” helps />
  • 6. Plone backend developer • Proficient Plone developer • Good CSS & HTML • Strong JS • Diazo and XSLT • Limited design capabilities and doubtful taste ;)
  • 10. Friendlier Site setup Stay in this room: next talk Resource Registry
  • 13. New markup: less Diazo • Updated Header • Updated Navigation • Updated Breadcrumbs • Updated Alerts • Updated Portlets • Updated Search • … • Just turn off Diazo adding ?diazo.off=1
  • 14. Diazo off = Plone naked Designer, really, save this: ?diazo.off=1
  • 15. /test_rendering All usual elements in one page
  • 16. Fontello font Updatable with JSON file: you all can update easily to your own glyphs
  • 17. We all like Bootstrap, but use Plone classes instead .context:extend(.btn-primary) { }
  • 18. So Plone 5 is • HTML5 • ARIA & WCAG • Responsive • LESS • Best JS ever • No layout tables • DL DT DD with pleasure! • Updated .pt files • Clever setup
  • 19. Many things has been updated Accessibility Addons Alerts Assignments Autotabs Breadcrumbs Buttons Code Control panel Dashboard Document by line Dropzone Error page Event Folder listing Forms Fullscreen image Header Image product Login Mail reset Maintenance Manage portlets Members Mixins Modal Navigation News Pagination Pick a date Portlets Recenty modified Search results Sharing Site map Site nav Sortable States Strutcture Tabbing Tables Tablesorter Thumbs TOC Toolbar Tree Types User settings Variables Views … Check everything on Barceloneta
  • 20. Just a recap for best practices!
  • 21. Designer frontend developer • Learn basic rules of Diazo • Reuse the fine existing Plone markup • Understand Plone structure • Have in mind Plone default classnames • Prototype in static HTML: Prototype, prototype, prototype • A “vainilla” Plone site to experiment with
  • 22. Plone structure Header Nav Breadcrumbs Alerts <main> Portlets Left Column Portlets footer Footer Portlets Right Column Content
  • 23. Plone classes and IDs • .portlet .portletNews • .formHelp, .formControls • .context, .standalone, .destructive • .documentFirstHeading • #portal-column-content • #edit-bar
  • 24. Do not create from scratch • Use the default Plone’s HTML before Diazoing • Understand Plone structure and distribution of elements, reuse it! • Copy/Reuse Barceloneta LESS and adapt it
  • 25. Ei designer: prototype • If you reuse Plone structure… • If you reuse Plone classes… • If you reuse Plone elements… Developers will love you
  • 26. Transfer prototype into a Diazo Theme for Plone
  • 27. About prototyping • Prototype based on the default Plone markup as far as possible • Know the limits of prototyping (:after limits sitelive) • Start to build the theme using the prototypes as baseline
  • 28. Use a package generator https://github.com/collective/zopeskel.diazotheme/ • Works with Plone 5. • We’ll have to add some new things, specially new resource registries GenericSetup .xml
  • 29. Diazo • Use Diazo to move blocks around • Do easy modifications to the default markup • Do not forget to make space for the toolbar just after the <body> tag with this rule: <replace css:theme=“#portal-toolbar" css:content-children=“#edit-bar" css:if-not-content=“.ajax_load" css:if-content=".userrole-authenticated"/>
  • 30. Only if strictly needed • Modify existing templates to match the prototypes ones using z3c.jbot for default viewlets, views and **portlets** • Only when Diazo rules turn insane or overcomplicated is when “jboting” is easier, quicker and hassle free
  • 31. Backend features • Implement the backend features using the prototype’s markup for templates
  • 32. Iterative improvement • Over the Diazo theme in the development site • Demo it to the customer frequently • Iterate over the feedback and bugs found
  • 33. Do not forget • Add custom styling for standard user generated markup Not anymore the custom you are thinking about
  • 35. main_template • No longer a portal_skins resource • Now it’s a BrowserView Products/CMFPlone/browser/templates/main_template.pt Products/CMFPlone/browser/main_template.py
  • 36. New Resource registries • Completely updated for modern frontend developing • Don’t want to reveal too much on them Spoilers Remember: Do not miss Rob’s and Ramon’s talk in this room after this talk
  • 37. New Resource registries Bundles Plone bundle Barceloneta bundle Legacy bundle Resources plone.less plone.js barceloneta.plone.less plone-legacy.less plone-legacy.js TTW customization and overrides Spoiler Alert!
  • 38. New Resource registries Spoiler Alert!
  • 39. New Resource registries Spoiler Alert! manifest.cfg
  • 40. Development mode • Compilation on browser of LESS/JS resources • Compilation on console via grunt watch task Spoiler Alert!
  • 41. Production mode Have we said that you should assist to the next talk? Spoiler Alert!
  • 42. Plone 5 Barceloneta Barcelona, Catalonia
  • 43. Pretty well ordered plonetheme > barceloneta > static > less
  • 44. Why not SASS? • LESS is done in JS and can be compiled in browser • Because we decided it and we don’t care. • Still not convinced? https://github.com/ekryski/less2sass
  • 45. Plone 5 and Barceloneta
  • 47. Deductible LESS structure and file naming
  • 51. Thanks / Gràcies @albertcasado @sneridagh