Three years ago this past Monday I started working for Six Feet Up and had my first exposure to Plone. Before that, I'd only had experience with static HTML, so there was a bit of a learning curve to not only learn Plone, but about CMSs in general. Having knowledgeable developers around me definitely helped me to learn Plone, but most people who jump into Plone don't have that advantage. The theming process can be quite overwhelming to a newcomer. Recently, some products have been developed to help with that learning curve, to make the Plone theming process easier. I took a little bit of time this FedEx day looking into Deliverance, Diazo, and Plone Themeeditor.
Diazo (formerly known as XDV, see links below) allows you to take some static html pages, and import Plone elements into those pages. The Plone elements can be set to replace parts of the static files, or they can be appended. All of this is managed in a file called rules.xml. The xml can use various types of selectors for determining what elements to change, such as CSS selectors or XPath. Firebug is a very important and useful tool for doing this.
In a Plone 4 instance, I started with collective.examples.diazo so I would have examples to build on. I copied the sample theme into a blank Plone theme (any type product will do). I created a 'static' folder in the theme, and had to register it in the zcml as a resource directory (requires instance restart or reload). Then, with the XDV settings in Site Setup, I pointed everything to my copied theme in `static`. Viewing the site at the specified domain (set in the XDV settings) now showed me the static pages, with a few Plone elements.
Since I am used to normal Plone theming, this very much felt like a hack to me. But I can see where it could be very handy:
- for someone who is new to Plone and who needs a theme ASAP
- with designs that need a lot of default Plone elements moved around
- in applying an existing HTML template and CSS to a Plone site.
Diazo and Deliverance are very similar, so many of my notes for Diazo above also apply here. Deliverance came first, Diazo emerged from it, and they continue to exist as two separate products.
A couple advantages to Deliverance over Diazo, as mentioned by Nate Aune in his Plone Conference 2010 talk are:
- Deliverance has a debugging console
- HTML and CSS are available to be edited through the web.
Plone Themeeditor is a product that allows you to make template and stylesheet customizations through the web, in Site Setup. This product is currently an alpha, so it still has some work to be done. But it has great potential.
Themeeditor worked the same as editing a site in the ZMI, in the custom folder and portal_view_customizations, but provides a nicer interface for it. One caveat is that it uses the names of Plone templates, and splits them up into templates, portlets, and viewlets, so you have to know what you're looking for in order to customize it. You also need to know TAL to edit the templates.
I was initially very skeptical of Themeeditor because of all the changes done through the web. But, then, I learned that you can export your customizations, and it uses paster to package the customizations into a Plone theme. That feature definitely makes the product something worth watching.
So the only issue I had with what I saw of the product is that there is no easy way to create a new CSS file. Instead, changes are to be made to an existing CSS files for small styling updates. The problem with this is it can cause extra difficulties when upgrading a site if the original CSS file has been updated, the same problem caused by customizing templates. If you're making minor CSS tweaks, put them in ploneCustom.css, or a custom CSS file to avoid such issues.
David Bain's talk at Plone Conference 2010 on Themeeditor
Themeeditor on Pypi
I can see where these products can be very useful, and they definitely have their place. My recommendation is that if you are going to continue theming and working with Plone, you should learn the full process of doing it. This will help you to better understand the system.
If you need help learning how to theme Plone, be sure to contact Six Feet Up or attend the upcoming Plone Symposium East at Penn State in May. I will likely be presenting in some way.
What experience have you had with these products? I would be curious to hear from someone who was not familiar with the Plone theming process.