Your SlideShare is downloading. ×
Upgrading a Plone 3 Theme for Plone 4: Beyond the Basics
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Upgrading a Plone 3 Theme for Plone 4: Beyond the Basics


Published on

Basic steps to make a Plone 3 theme usable in Plone 4 and solutions to more advanced issues you may encounter during the upgrade process.

Basic steps to make a Plone 3 theme usable in Plone 4 and solutions to more advanced issues you may encounter during the upgrade process.

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Upgrading a Plone 3 Theme for Plone 4: Beyond the Basics
  • 2. What’s changed?
  • 3. Tutorial on will get you started
  • 4. Plone 4 has a new theme: Sunburst
  • 5. Plone 4 also includes•  Plone Classic – •  Plone Default – The default Plone 3 A barebones template theme with no styling
  • 6. Updates to•  Defines on the html tag have been modified•  Some new defines have been added to the body tag•  Viewlet managers formerly in content area have been moved to main_template•  New slot called "content-core" has been added for the content body
  • 7. Updates to template variables•  Many global template variables are no longer available  Good news: speed!  Bad news: you must define them to use them NameError: name templateId is not defined•  Examples: template_id, toLocalizedTime, portal, isAnon, member . . . many more (see docs on
  • 8. Moved viewlet managers / macros•  Document title, description, abovecontenttitle, belowcontenttitle, abovecontentbody, belowcontentbody, relateditems - out of content templates and into main•  Keywords in belowcontent, not in belowcontenttitle•  Contenthistory a link in documentbyline, not in belowcontentbody
  • 9. Review all your custom templates to see whether your theme is affected
  • 10. Update the “based-on” declarations in Generic Setup profiles•  Skin paths (skins.xml) and viewlet managers (viewlets.xml) should be based on “Plone Classic Theme” instead of “Plone Default” <order manager="plone.portaltop" skinname="UCLA Default Theme" based- on="Plone Classic Theme">
  • 11. Update the theme specific interface•  Subclass the interface from Plone Classic Theme (not IDefaultPloneLayer) in browser/ interfaces.pyfrom plonetheme.classic.browser.interfaces import IThemeSpecific as IClassicThemeclass IThemeSpecific(IClassicTheme): """theme-specific layer"""
  • 12. But, but …•  What if I want my theme to be compatible with Plone 3 and Plone 4?•  Why are my viewlets showing up all over?•  What’s with the personal bar?•  How do I deal with the new visual editor, TinyMCE?•  Where are the CSS selectors I was using?•  My overlays are whack!
  • 13. Preserving Plone 3 compatibility•  Add a dependency on plonetheme.classic – so imports don’t fail in your Plone 3 sites•  In install_requires=[ setuptools, # -*- Extra requirements: -*- plonetheme.classic, ],
  • 14. Plone 3 compatibility (cont.)•  In configure.zcml: <includeDependencies package="." />•  In profiles/default/metadata.xml: <dependencies> <dependency>profile- plonetheme.classic:default</dependency> </dependencies>
  • 15. Viewlet changes•  plone.personal_bar – in plone.portalheader instead of plone.portaltop•  plone.site_actions – in plone.portalfooter instead of plone.portalheader•  plone.path_bar – in plone.abovecontent instead of plone.portaltop•  plone.abovecontent viewlet manager comes before plone.contentviews
  • 16. Controlling viewlets•  Use viewlets.xml to hide duplicate viewlets•  Show them again on uninstall•  Use conditional zcml to register viewlets as needed for Plone 3 or Plone 4
  • 17. Conditional ZCML Example<!-- Plone 3 condition check--><configure zcml:condition="not-installed"> <browser:viewlet name="plone.personal_bar” manager="" . . . /></configure><!-- Plone 4 condition check--><configure zcml:condition="installed"> <browser:viewlet name="plone.personal_bar” manager="" . . . /></configure>
  • 18. Adjust to the personal bar in Plone 4•  Has the .actionMenu class – dropdown behavior and green styles•  Is structured as definition list (dl) rather than unordered list (ul)•  May need to write new styles, to:  Render the options inline (old-fashioned way)  Coordinate with your site design (avoid the green)•  Includes Site Setup link – hurray!
  • 19. TinyMCE in addition to Kupu•  May need to define new styles for TinyMCE editor•  Kupu had: .kupu-html body•  TinyMCE has: body.mceContentBody
  • 20. CSS changes•  .documentContent and #region-content are gone – use #content, #content-core, or other selectors•  .documentEditable comes later, after abovecontent viewlet and status messages•  #content ul and #content li a override styles for .configlets – use #content ul.configlets and #content ul.configlets li a
  • 21. Styling overlays•  Target .pb-ajax and its children
  • 22. Questions?