SlideShare a Scribd company logo
1 of 48
Download to read offline
Víctor Fernández de Alba

@sneridagh
Plone 5

Theming
• Plone Foundation Member
• plone.app.multilingual
• “Barceloneta" default Plone 5 theme
• Team leader of the new plone.org site project
Víctor Fernández de Alba
@sneridagh
Oriol Martí
@OriolMartiColom
Albert Casado Celma
@albertcasado
Deductible 

LESS

structure

and file naming
variables.plone.less
Bootstrap 3 - based
• Based, not dependent in any way
• prepended plone-* whenever possible as
long it does not breaks legacy CSS
• Original BS resources included on Plone
Plone legacy classes and IDs
• .portlet .portletNews
• .formHelp, .formControls
• .context, .standalone, .destructive
• .documentFirstHeading
• #portal-column-content
• #edit-bar
Changes
plone.mainnavigation
viewlet
Fontello icons
New default way of manage collection of icons
Used in Plone bundle and Barceloneta
(http://fontello.com/)
How to use Fontello?
Products.CMFPlone > static > fonts
Just load config.json in fontello.com

and start hacking/adding your own fonts
Save it and add it to your own theme
Plone Toolbar
• plone.app.layout
• plone.app.contentmenu
• Small changes since last year
• Site control panel setting for change
the orientation
Plone Toolbar (II)
<replace css:theme=“#portal-toolbar"
css:content-children=“#edit-bar"
css:if-not-content=“.ajax_load"
css:if-content=".userrole-authenticated"/>
• Do not forget to make space for the toolbar just after
the <body> tag with this rule:
Control Panel
• Use a Fontello (or CSS font-face based solution)
• Add a CSS class with the “normalized” name of
your new control panel item like:
.icon-controlpanel-FilterSettings:before
{ content: 'e844'; }
Easy backend
customization
• Reusing Barceloneta resources
• Use the new Barceloneta backend.xml Diazo rules and
related CSS
• in the future, use the Plone Intranet theme switcher
Resource Registries
Resource Registries
Resource
Bundle
Overrides
Variables
Pattern options
Resource
• RR basic unit
• A collection of LESS files and JS
• Actually, is more like a web component for Plone
Resource
Bundle
• A collection of RR resources
• Finally, they compile to a single CSS and JS
resources in production mode
• Development mode for LESS and JS on the fly
• They can be compiled TTW statically too (ZODB)
Bundle
Overrides
• Easy customization of ++plone++ resources
• Why to stop here? More on that later…
Plone Variables
• TTW plone.less variable customization
Automatic variables
• Available for every RR resource
• Used in compilation
• TTW they resolve to URLs
• in console they resolve to FS path
@import url("@{mockup-patterns-select2}");
No more
<div metal:fill-slot=“javascript_head_slot” />
<div metal:fill-slot=“style_slot” />
and welcome to
add_bundle_on_request(self.request, 'thememapper')
add_resource_on_request(self.request,
'jquery.recurrenceinput')
Console script helpers
./bin/plone-compile-resources --site-id=myplonesite --
bundle=mybundle
./bin/plone-generate-gruntfile --site-id=myplonesite --
bundle=mybundle
Diazo
Diazo
• Pure Diazo theme definition
• Diazo bundles
• New manifest parameters
Pure Diazo
• Remember its original definition
• Easy for a designer to jump in
• Distributed through zip (import/export)
Diazo bundles
• They preserve the “pureness” of a Diazo theme
• New manifest attributes
Best Practices
Reuse Barceloneta as far as
you want
Optional Barceloneta profile
to register Barceloneta resources
<dependency>
profile-plonetheme.barceloneta:registerless
</dependency>
(metadata.xml)
Reuse Barceloneta as far as
you want (II)
@import "@{barceloneta-fonts}";
Use it in your own less files
by using the barceloneta-* variables
Dont get obsessed with
• Use the CSS framework you like the most, you are
not tied to Bootstrap
• The number of requests your site is doing: HTTP2.0
is almost here
Don’t be tempted
by the dark side
Skins layers are not allowed
Use plone.resource instead
For overriding use z3c.jbot
CSS frameworks
.context:extend(.btn-primary) { }
Use the “extend” feature
Adapt the grid via Diazo
Or via a custom transform (like Mosaic does)
Do not create the theme
from scratch
• Use the bobtemplates.plone templates
• Use the default Plone’s HTML before Diazo it, now the
Plone markup is modern, updated and accessible
• Understand Plone structure and distribution of
elements and reuse it
• Copy/Reuse Barceloneta LESS and adapt it
TinyMCE
• Custom generated stylesheets
• New Diazo Tiny content specific CSS
• Tiny content templates now in core!
Nginx passthrough
(for static plone.resources
++something++)
location ~ .*?/++components++root/(.*) {
alias /path/to/my/package/$1;
}
You can even combine it with collective.recipe.omelette for
total convenience ;)
Useful tools
• Chrome reloader Eric Bréhault’s button
• ?diazo.off=1
• ?diazo.debug=1
• @@test_rendering
Not only

Plone is back
TTW is back!
(for good! and with vengeance too!)
Change Logo
Toolbar logo (really?)
plone.app.theming has more power than ever before
Plone customizations TTW
• They rock, like never before
• TTW is an opportunity to attract new people
• Plone must have a zero effort story for easy and quick
customization
• Now it’s even possible to do complex things TTW
• Let’s make a theming and customization learning curve
really low steep
• Objective: attract non technical people to try Plone
DEMO!!!
collective.jbot
• It covers gaps in the current Plone
customization scenario stories
• Should work on Plone 5 soon (anyone?)
• Should discuss the inclusion in the core
• Overcome some security issues
Thoughts for the future
• What will happen when skins will be
gone?
• It would be nice to have a way to override
++mynamespace++ like RR already does
for ++plone++ resources (Overrides tab)
• pat-filemanager
• Mosaic already does something similar
with ++layout++ resources
Thanks
Víctor Fernández de Alba

@sneridagh

More Related Content

What's hot

10 New Things You Can Do with Drupal 8 Out-of-the-Box
10 New Things You Can Do with Drupal 8 Out-of-the-Box10 New Things You Can Do with Drupal 8 Out-of-the-Box
10 New Things You Can Do with Drupal 8 Out-of-the-BoxSuzanne Dergacheva
 
Untangling spring week5
Untangling spring week5Untangling spring week5
Untangling spring week5Derek Jacoby
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserlittlebtc
 
MozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: TaichungMozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: Taichunglittlebtc
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11Derek Jacoby
 
Untangling spring week10
Untangling spring week10Untangling spring week10
Untangling spring week10Derek Jacoby
 
Untangling spring week8
Untangling spring week8Untangling spring week8
Untangling spring week8Derek Jacoby
 
Untangling spring week6
Untangling spring week6Untangling spring week6
Untangling spring week6Derek Jacoby
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Derek Jacoby
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1Derek Jacoby
 
Untangling spring week12
Untangling spring week12Untangling spring week12
Untangling spring week12Derek Jacoby
 
Deployer - Deployment tool for PHP
Deployer - Deployment tool for PHPDeployer - Deployment tool for PHP
Deployer - Deployment tool for PHPhernanibf
 
Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11Derek Jacoby
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websitehernanibf
 
How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OSbenko
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go Eylem Ozekin
 
Drupal content editor flexibility
Drupal content editor flexibilityDrupal content editor flexibility
Drupal content editor flexibilityhernanibf
 

What's hot (20)

10 New Things You Can Do with Drupal 8 Out-of-the-Box
10 New Things You Can Do with Drupal 8 Out-of-the-Box10 New Things You Can Do with Drupal 8 Out-of-the-Box
10 New Things You Can Do with Drupal 8 Out-of-the-Box
 
Untangling spring week5
Untangling spring week5Untangling spring week5
Untangling spring week5
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browser
 
MozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: TaichungMozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: Taichung
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11
 
Untangling spring week10
Untangling spring week10Untangling spring week10
Untangling spring week10
 
Untangling spring week8
Untangling spring week8Untangling spring week8
Untangling spring week8
 
Untangling spring week6
Untangling spring week6Untangling spring week6
Untangling spring week6
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1
 
Untangling spring week12
Untangling spring week12Untangling spring week12
Untangling spring week12
 
Automation in Drupal
Automation in DrupalAutomation in Drupal
Automation in Drupal
 
Deployer - Deployment tool for PHP
Deployer - Deployment tool for PHPDeployer - Deployment tool for PHP
Deployer - Deployment tool for PHP
 
Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11
 
Drupal Flyover, CMS Expo
Drupal Flyover, CMS ExpoDrupal Flyover, CMS Expo
Drupal Flyover, CMS Expo
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your website
 
How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OS
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go
 
Untangling11
Untangling11Untangling11
Untangling11
 
Drupal content editor flexibility
Drupal content editor flexibilityDrupal content editor flexibility
Drupal content editor flexibility
 

Similar to Plone 5 theming

Upgrading a Plone 3 Theme for Plone 4: Beyond the Basics
Upgrading a Plone 3 Theme for Plone 4: Beyond the BasicsUpgrading a Plone 3 Theme for Plone 4: Beyond the Basics
Upgrading a Plone 3 Theme for Plone 4: Beyond the BasicsHeather Wozniak
 
ZopeSkel: The past, present and future
ZopeSkel: The past, present and futureZopeSkel: The past, present and future
ZopeSkel: The past, present and futureCristopher Ewing
 
full-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptxfull-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptxPlasterdog Web Design
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an OverviewMatt Weaver
 
Drupal, git and sanity
Drupal, git and sanityDrupal, git and sanity
Drupal, git and sanityCharlie Morris
 
Child Themes and CSS in WordPress
Child Themes and CSS in WordPressChild Themes and CSS in WordPress
Child Themes and CSS in WordPressMatthew Vaccaro
 
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Lucidworks
 
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De BlockDrupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De BlockMaarten De Block
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Eugenio Minardi
 
Rapid WordPress theme development
Rapid WordPress theme developmentRapid WordPress theme development
Rapid WordPress theme developmentJonny Allbut
 
HTML5, just another presentation :)
HTML5, just another presentation :)HTML5, just another presentation :)
HTML5, just another presentation :)François Massart
 
Web technologies-course 06.pptx
Web technologies-course 06.pptxWeb technologies-course 06.pptx
Web technologies-course 06.pptxStefan Oprea
 
Introduction to Drupal (7) Theming
Introduction to Drupal (7) ThemingIntroduction to Drupal (7) Theming
Introduction to Drupal (7) ThemingRobert Carr
 
SilverStripe From a Developer's Perspective
SilverStripe From a Developer's PerspectiveSilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspectiveajshort
 
Intro to CakePHP 1.3
Intro to CakePHP 1.3Intro to CakePHP 1.3
Intro to CakePHP 1.3Adam Culp
 
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Mark Hamstra
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Dutyreedmaniac
 

Similar to Plone 5 theming (20)

Upgrading a Plone 3 Theme for Plone 4: Beyond the Basics
Upgrading a Plone 3 Theme for Plone 4: Beyond the BasicsUpgrading a Plone 3 Theme for Plone 4: Beyond the Basics
Upgrading a Plone 3 Theme for Plone 4: Beyond the Basics
 
ZopeSkel: The past, present and future
ZopeSkel: The past, present and futureZopeSkel: The past, present and future
ZopeSkel: The past, present and future
 
full-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptxfull-site-editing-theme-presentation.pptx
full-site-editing-theme-presentation.pptx
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
 
Drupal, git and sanity
Drupal, git and sanityDrupal, git and sanity
Drupal, git and sanity
 
Child Themes and CSS in WordPress
Child Themes and CSS in WordPressChild Themes and CSS in WordPress
Child Themes and CSS in WordPress
 
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
 
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De BlockDrupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
Drupal 8 Basic Training - DrupalEurope 2018 - Maarten De Block
 
Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3
 
Oenology
OenologyOenology
Oenology
 
72d5drupal
72d5drupal72d5drupal
72d5drupal
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)
 
Rapid WordPress theme development
Rapid WordPress theme developmentRapid WordPress theme development
Rapid WordPress theme development
 
HTML5, just another presentation :)
HTML5, just another presentation :)HTML5, just another presentation :)
HTML5, just another presentation :)
 
Web technologies-course 06.pptx
Web technologies-course 06.pptxWeb technologies-course 06.pptx
Web technologies-course 06.pptx
 
Introduction to Drupal (7) Theming
Introduction to Drupal (7) ThemingIntroduction to Drupal (7) Theming
Introduction to Drupal (7) Theming
 
SilverStripe From a Developer's Perspective
SilverStripe From a Developer's PerspectiveSilverStripe From a Developer's Perspective
SilverStripe From a Developer's Perspective
 
Intro to CakePHP 1.3
Intro to CakePHP 1.3Intro to CakePHP 1.3
Intro to CakePHP 1.3
 
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 

More from sneridagh

Meet Quanta - Plone's Style Guide
Meet Quanta - Plone's Style GuideMeet Quanta - Plone's Style Guide
Meet Quanta - Plone's Style Guidesneridagh
 
MAX: Realtime messaging and activity stream engine
MAX: Realtime messaging and activity stream engineMAX: Realtime messaging and activity stream engine
MAX: Realtime messaging and activity stream enginesneridagh
 
Key factors of the content management
Key factors of the content managementKey factors of the content management
Key factors of the content managementsneridagh
 
Factors claus de la gestió de continguts
Factors claus de la gestió de contingutsFactors claus de la gestió de continguts
Factors claus de la gestió de contingutssneridagh
 
Introduction to Pyramid
Introduction to PyramidIntroduction to Pyramid
Introduction to Pyramidsneridagh
 
Arquitectura de serveis per aplicacions mòbils
Arquitectura de serveis per aplicacions mòbilsArquitectura de serveis per aplicacions mòbils
Arquitectura de serveis per aplicacions mòbilssneridagh
 

More from sneridagh (6)

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

Recently uploaded

Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 

Recently uploaded (20)

Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 

Plone 5 theming

  • 1. Víctor Fernández de Alba @sneridagh Plone 5 Theming
  • 2. • Plone Foundation Member • plone.app.multilingual • “Barceloneta" default Plone 5 theme • Team leader of the new plone.org site project Víctor Fernández de Alba @sneridagh
  • 3.
  • 7. Bootstrap 3 - based • Based, not dependent in any way • prepended plone-* whenever possible as long it does not breaks legacy CSS • Original BS resources included on Plone
  • 8. Plone legacy classes and IDs • .portlet .portletNews • .formHelp, .formControls • .context, .standalone, .destructive • .documentFirstHeading • #portal-column-content • #edit-bar
  • 11. Fontello icons New default way of manage collection of icons Used in Plone bundle and Barceloneta (http://fontello.com/)
  • 12. How to use Fontello? Products.CMFPlone > static > fonts Just load config.json in fontello.com and start hacking/adding your own fonts Save it and add it to your own theme
  • 13. Plone Toolbar • plone.app.layout • plone.app.contentmenu • Small changes since last year • Site control panel setting for change the orientation
  • 14. Plone Toolbar (II) <replace css:theme=“#portal-toolbar" css:content-children=“#edit-bar" css:if-not-content=“.ajax_load" css:if-content=".userrole-authenticated"/> • Do not forget to make space for the toolbar just after the <body> tag with this rule:
  • 15. Control Panel • Use a Fontello (or CSS font-face based solution) • Add a CSS class with the “normalized” name of your new control panel item like: .icon-controlpanel-FilterSettings:before { content: 'e844'; }
  • 16. Easy backend customization • Reusing Barceloneta resources • Use the new Barceloneta backend.xml Diazo rules and related CSS • in the future, use the Plone Intranet theme switcher
  • 19. Resource • RR basic unit • A collection of LESS files and JS • Actually, is more like a web component for Plone
  • 21. Bundle • A collection of RR resources • Finally, they compile to a single CSS and JS resources in production mode • Development mode for LESS and JS on the fly • They can be compiled TTW statically too (ZODB)
  • 23. Overrides • Easy customization of ++plone++ resources • Why to stop here? More on that later…
  • 24. Plone Variables • TTW plone.less variable customization
  • 25. Automatic variables • Available for every RR resource • Used in compilation • TTW they resolve to URLs • in console they resolve to FS path @import url("@{mockup-patterns-select2}");
  • 26. No more <div metal:fill-slot=“javascript_head_slot” /> <div metal:fill-slot=“style_slot” /> and welcome to add_bundle_on_request(self.request, 'thememapper') add_resource_on_request(self.request, 'jquery.recurrenceinput')
  • 27. Console script helpers ./bin/plone-compile-resources --site-id=myplonesite -- bundle=mybundle ./bin/plone-generate-gruntfile --site-id=myplonesite -- bundle=mybundle
  • 28. Diazo
  • 29. Diazo • Pure Diazo theme definition • Diazo bundles • New manifest parameters
  • 30. Pure Diazo • Remember its original definition • Easy for a designer to jump in • Distributed through zip (import/export)
  • 31. Diazo bundles • They preserve the “pureness” of a Diazo theme • New manifest attributes
  • 33. Reuse Barceloneta as far as you want Optional Barceloneta profile to register Barceloneta resources <dependency> profile-plonetheme.barceloneta:registerless </dependency> (metadata.xml)
  • 34. Reuse Barceloneta as far as you want (II) @import "@{barceloneta-fonts}"; Use it in your own less files by using the barceloneta-* variables
  • 35. Dont get obsessed with • Use the CSS framework you like the most, you are not tied to Bootstrap • The number of requests your site is doing: HTTP2.0 is almost here
  • 36. Don’t be tempted by the dark side Skins layers are not allowed Use plone.resource instead For overriding use z3c.jbot
  • 37. CSS frameworks .context:extend(.btn-primary) { } Use the “extend” feature Adapt the grid via Diazo Or via a custom transform (like Mosaic does)
  • 38. Do not create the theme from scratch • Use the bobtemplates.plone templates • Use the default Plone’s HTML before Diazo it, now the Plone markup is modern, updated and accessible • Understand Plone structure and distribution of elements and reuse it • Copy/Reuse Barceloneta LESS and adapt it
  • 39. TinyMCE • Custom generated stylesheets • New Diazo Tiny content specific CSS • Tiny content templates now in core!
  • 40. Nginx passthrough (for static plone.resources ++something++) location ~ .*?/++components++root/(.*) { alias /path/to/my/package/$1; } You can even combine it with collective.recipe.omelette for total convenience ;)
  • 41. Useful tools • Chrome reloader Eric Bréhault’s button • ?diazo.off=1 • ?diazo.debug=1 • @@test_rendering
  • 43. TTW is back! (for good! and with vengeance too!) Change Logo Toolbar logo (really?) plone.app.theming has more power than ever before
  • 44. Plone customizations TTW • They rock, like never before • TTW is an opportunity to attract new people • Plone must have a zero effort story for easy and quick customization • Now it’s even possible to do complex things TTW • Let’s make a theming and customization learning curve really low steep • Objective: attract non technical people to try Plone
  • 46. collective.jbot • It covers gaps in the current Plone customization scenario stories • Should work on Plone 5 soon (anyone?) • Should discuss the inclusion in the core • Overcome some security issues
  • 47. Thoughts for the future • What will happen when skins will be gone? • It would be nice to have a way to override ++mynamespace++ like RR already does for ++plone++ resources (Overrides tab) • pat-filemanager • Mosaic already does something similar with ++layout++ resources
  • 48. Thanks Víctor Fernández de Alba @sneridagh