SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
WordPress Theme Development
 WordPress Theme Development WordPress Theme Development
WordPress Theme DevelopmentBijay Oli
 
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
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPressTaylor Lovett
 
Advanced WordPress Development Environments
Advanced WordPress Development EnvironmentsAdvanced WordPress Development Environments
Advanced WordPress Development EnvironmentsBeau Lebens
 
NewBCamp09: Turning your design into a WordPress Theme
NewBCamp09: Turning your design into a WordPress ThemeNewBCamp09: Turning your design into a WordPress Theme
NewBCamp09: Turning your design into a WordPress ThemeAdam Darowski
 
Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...Marcel Chastain
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practicesmarkparolisi
 
Theme guru's (Moodle 2 Edition)
Theme guru's (Moodle 2 Edition)Theme guru's (Moodle 2 Edition)
Theme guru's (Moodle 2 Edition)Julian Ridden
 
WordPress as the Backbone(.js)
WordPress as the Backbone(.js)WordPress as the Backbone(.js)
WordPress as the Backbone(.js)Beau Lebens
 
You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHPTaylor Lovett
 
Writing a WordPress Theme - HighEdWeb 2013 #WRK2
Writing a WordPress Theme - HighEdWeb 2013 #WRK2Writing a WordPress Theme - HighEdWeb 2013 #WRK2
Writing a WordPress Theme - HighEdWeb 2013 #WRK2Curtiss Grymala
 
Drupal 8 theming deep dive
Drupal 8 theming deep diveDrupal 8 theming deep dive
Drupal 8 theming deep diveRomain Jarraud
 
PHP language presentation
PHP language presentationPHP language presentation
PHP language presentationAnnujj Agrawaal
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themeswpnepal
 
DSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI ThemingDSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI ThemingDuraSpace
 
Introduction to XMLUI and Mirage Theming for DSpace 3
Introduction to XMLUI and Mirage Theming for DSpace 3Introduction to XMLUI and Mirage Theming for DSpace 3
Introduction to XMLUI and Mirage Theming for DSpace 3Bram Luyten
 
Builing a WordPress Theme
Builing a WordPress ThemeBuiling a WordPress Theme
Builing a WordPress Themecertainstrings
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracketjnewmanux
 

Was ist angesagt? (20)

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)
 
PyFilesystem
PyFilesystemPyFilesystem
PyFilesystem
 
WordPress Theme Development
 WordPress Theme Development WordPress Theme Development
WordPress Theme Development
 
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
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Advanced WordPress Development Environments
Advanced WordPress Development EnvironmentsAdvanced WordPress Development Environments
Advanced WordPress Development Environments
 
NewBCamp09: Turning your design into a WordPress Theme
NewBCamp09: Turning your design into a WordPress ThemeNewBCamp09: Turning your design into a WordPress Theme
NewBCamp09: Turning your design into a WordPress Theme
 
Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practices
 
Theme guru's (Moodle 2 Edition)
Theme guru's (Moodle 2 Edition)Theme guru's (Moodle 2 Edition)
Theme guru's (Moodle 2 Edition)
 
WordPress as the Backbone(.js)
WordPress as the Backbone(.js)WordPress as the Backbone(.js)
WordPress as the Backbone(.js)
 
You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHP
 
Writing a WordPress Theme - HighEdWeb 2013 #WRK2
Writing a WordPress Theme - HighEdWeb 2013 #WRK2Writing a WordPress Theme - HighEdWeb 2013 #WRK2
Writing a WordPress Theme - HighEdWeb 2013 #WRK2
 
Drupal 8 theming deep dive
Drupal 8 theming deep diveDrupal 8 theming deep dive
Drupal 8 theming deep dive
 
PHP language presentation
PHP language presentationPHP language presentation
PHP language presentation
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
 
DSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI ThemingDSpace 4.2 XMLUI Theming
DSpace 4.2 XMLUI Theming
 
Introduction to XMLUI and Mirage Theming for DSpace 3
Introduction to XMLUI and Mirage Theming for DSpace 3Introduction to XMLUI and Mirage Theming for DSpace 3
Introduction to XMLUI and Mirage Theming for DSpace 3
 
Builing a WordPress Theme
Builing a WordPress ThemeBuiling a WordPress Theme
Builing a WordPress Theme
 
Killing the Angle Bracket
Killing the Angle BracketKilling the Angle Bracket
Killing the Angle Bracket
 

Andere mochten auch

Sociale Netwerken, Lunchpresentatie 2008
Sociale Netwerken, Lunchpresentatie 2008Sociale Netwerken, Lunchpresentatie 2008
Sociale Netwerken, Lunchpresentatie 2008Menno van Hasselt
 
Presentatie Catalaanse Delegatie, 30 10 2008
Presentatie Catalaanse Delegatie, 30 10 2008Presentatie Catalaanse Delegatie, 30 10 2008
Presentatie Catalaanse Delegatie, 30 10 2008Menno van Hasselt
 
Didactische Meerwaarde Van Ict, 12 Mei 2009
Didactische Meerwaarde Van Ict, 12 Mei 2009Didactische Meerwaarde Van Ict, 12 Mei 2009
Didactische Meerwaarde Van Ict, 12 Mei 2009Menno van Hasselt
 
M-marketing and M-advertising - Coralie BARBIER
M-marketing and M-advertising - Coralie BARBIERM-marketing and M-advertising - Coralie BARBIER
M-marketing and M-advertising - Coralie BARBIERcoraliebarbier
 

Andere mochten auch (8)

Cebit 2008, Nieuwe Versie
Cebit 2008, Nieuwe VersieCebit 2008, Nieuwe Versie
Cebit 2008, Nieuwe Versie
 
Sociale Netwerken, Lunchpresentatie 2008
Sociale Netwerken, Lunchpresentatie 2008Sociale Netwerken, Lunchpresentatie 2008
Sociale Netwerken, Lunchpresentatie 2008
 
Presentatie Catalaanse Delegatie, 30 10 2008
Presentatie Catalaanse Delegatie, 30 10 2008Presentatie Catalaanse Delegatie, 30 10 2008
Presentatie Catalaanse Delegatie, 30 10 2008
 
Social Media Smarts
Social Media SmartsSocial Media Smarts
Social Media Smarts
 
Didactische Meerwaarde Van Ict, 12 Mei 2009
Didactische Meerwaarde Van Ict, 12 Mei 2009Didactische Meerwaarde Van Ict, 12 Mei 2009
Didactische Meerwaarde Van Ict, 12 Mei 2009
 
Effective Email Marketing
Effective Email MarketingEffective Email Marketing
Effective Email Marketing
 
AIGA “Moving Pixels”
AIGA “Moving Pixels” AIGA “Moving Pixels”
AIGA “Moving Pixels”
 
M-marketing and M-advertising - Coralie BARBIER
M-marketing and M-advertising - Coralie BARBIERM-marketing and M-advertising - Coralie BARBIER
M-marketing and M-advertising - Coralie BARBIER
 

Ähnlich wie Plone 5 theming

Plone 5 theming unleashed
Plone 5 theming unleashedPlone 5 theming unleashed
Plone 5 theming unleashedsneridagh
 
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
 
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
 
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
 
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
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To DrupalLauren Roth
 

Ähnlich wie Plone 5 theming (20)

Plone 5 theming unleashed
Plone 5 theming unleashedPlone 5 theming unleashed
Plone 5 theming unleashed
 
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
 
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
 
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
 
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
 
presentation
presentationpresentation
presentation
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
 

Kürzlich hochgeladen

WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 

Kürzlich hochgeladen (20)

WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 

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