Personal tools

Contact Us 24/7 > 1 866.SIX FEET

Skip to content. | Skip to navigation

Home > Blog > Why Learning Traditional Plone Theming is Important

EVERYONE.NET SCHEDULED MAINTENANCE will be performing maintenance on their databases Friday October 28th, 2016 between 9:00PM PT to 3:00AM PT / 12:00AM ET to 06:00AM ET. During this time, all services including web mail, POP, IMAP, and SMTP relay may experience degraded performance and inbound mail delivery delays. We apologize for any inconvenience.


Why Learning Traditional Plone Theming is Important

written by Chrissy Wainwright on Friday September 30, 2011

There has been a lot of excitement in the Plone community lately about - which provides a way to theme a Plone site without having to learn a lot about Plone itself. It uses Diazo technology, which allows you to grab dynamic elements from Plone, and display them from a static HTML page. While this is the new thing that everyone is jumping to, that doesn't mean that traditional theming becomes obsolete.

I am a big proponent of traditional Plone theming. This involves overriding Plone templates and using Plone technologies like TAL and viewlets for building a theme. So far in my examination of, I'm finding that many traditional theming methods are still important for creating themes that maintain full control over the display of Plone elements and content. I believe that if you plan on doing a lot of work in Plone, you should learn traditional theming methods.

Why traditional theming is important:

  1. It helps you to understand the inner-workings of Plone. This can be important if you plan on doing more than just theming.
  2. If you have just a small change that needs to be made in a template (such as newsitem_view), it can be a lot easier to throw that template into skins with your change than to write up the rules with your customization.
  3. Learning TAL for displaying and modifying Plone content is very useful.
  4. Generic Setup is recommended for use in for controlling CSS and JS files through the registries.

Why you shouldn't jump into just yet:

  1. is still a new technology in testing. Some sites are already using it, but I recommend waiting until it has been finalized and more documentation is available.  There are a lot of planned features that have not yet been developed. (Though I know the developers would also appreciate it if you could test the product and provide feedback.)
  2. At this point, Diazo templates and rules are not editable within the site.  This is a feature currently in the works (and is looking great).
  3. If building a Diazo theme from scratch, it can be easy to accidentally leave out some of the important Plone elements. Another feature being developed is a base theme that would give you a solid starting point.


Personally, I'm not convinced that is the way for me to go in the themes I create from scratch, but I can see how it could be a very helpful tool, particularly with the current development being done on it. I just want to stress the importance of learning traditional theming methods, since they remain relevant.

In my Plone Theming Training at the Plone Conference next month, I will be focusing on traditional theming methods, but I will also cover creating a theme with There is still space available in the class if you want to learn how to theme Plone.

There will also be some Diazo talks at conference for those wanting to take that theming path.

What kind of experience have you had with, and do you think traditional methods are still relevant?

Posted by Martin on Oct 03, 2011 12:00 PM
Some notes on p.a.theming: - It is feature complete now and will be in Plone 4.2 - In Plone 4.3, we are proposing a more advanced, in-Plone theme mapper and file manager, which will make basic theme building more point-and-click - You can edit Diazo rules in Plone even now, using the ZMI, but the PLIP for Plone 4.3 (you'll likely be able to upgrade p.a.theming in a Plone 4.1 or 4.2 site to use this long before 4.3 is out) will make this much nicer - You don't need to use GenericSetup if you don't want to, though for really high-performance sites you may want to make use of portal_css/portal_javascripts for theme-specific resources, in which case GS (and eggs) become required for easy distribution. In my own experience, teaching people the Diazo approach takes significantly less time: days rather than weeks from start to being productive. I do advocate combining p.a.theming with z3c.jbot for targeted template overrides. For a more integrated experience, you can use, which also lets you create 'new' views without learning ZCML or having to fiddle with Buildout to create new Python eggs. In fact, in my experience those are the biggest obstacles (the second big obstacle being knowing where to find the things to override) for 'traditional' theming. This, of course, means knowing TAL is still very valuable. I think there's a natural point of progression for new themers from really basic Diazo themes, to more advanced Diazo themes (e.g. using basic inline XSL), to overriding templates using z3c.jbot. However, even as someone who knows the internals of Plone very well (i.e. I put a lot of the templates there), I wouldn't even consider not using Diazo. It's just so much faster and easier for me. I have a few main philosophical problems with override-the-template style theming: - People often get pristine HTML/CSS from designers. Diazo makes it very easy to reuse such assets. Breaking them up and trying to fit them into main_template, various views and a dozen odd viewlets can be tricky: It's not easy to build a clean mental model of where the bits fit together. - The further you go from Plone's three-column layout, the more you have to override and the more complex your customisations become. - Because you can override anything, every single bit of Plone's templates in effect becomes an API that you depend on. This makes upgrades dangerous, even minor ones. Diazo themes should be easier to upgrade (though you may still fall victim to selectors not working if e.g. ids are changed) I would personally (and on the projects I manage) strongly recommend *starting* with Plone theming has traditionally been thought of as very difficult, with some justification. I don't think it's fair to expose someone who mainly wants to operate at the HTML/CSS level to the amount of ZCML/XML, buildout and Python and the level of detail of Plone internals required to be able to do "anything" to the look and feel of a Plone site, and I've often seen people compromise and end up with a design that looks more like "stock" Plone than they would've liked. However, I also think you're absolutely right that it becomes important to know TAL, and to understand how a Plone page is composed and rendered. With Diazo theming, though, you don't strictly need to, at least not until you start having quite unusual requirements (or you need new *functionality*). It's also worth noting that p.a.theming and Diazo have become significantly better and more battle tested in the past 6-12 months. If you used XDV before and found it lacking, many of the things people struggled with have now been addressed. I think this article is a bit misleading in implying that these are immature technologies: We started working on this in 2006! Martin
Add comment

You can add a comment by filling out the form below. Plain text formatting.


Next Steps

Select a type of support:

Contact our sales team

First name:
Last name:
Phone Number:
Fight spam:
What is + ?
Call Us 1 866.SIX FEET