Personal tools
You are here: Home Archive 2006 January 05 How ONE/Northwest Customizes Plone For Grassroots Websites
Document Actions

How ONE/Northwest Customizes Plone For Grassroots Websites

by jons last modified January 05, 2006 - 21:11
Filed Under:

A brief outline of some of the techniques and tricks we employ when using Plone to make good looking, powerful, easy-to-use websites for small nonprofit organizations.

Over on my personal blog, Will Parks just asked:

I’ve also seen quite a few of your sites on del.icio.us, you do excellent work modifying the layout of Plone. This is my first time at this blog, did you ever write an entry about the customization process you use?

In fact, I haven't.  But I'm really proud of many of the sites my talented colleagues here at ONE/Northwest have launched since we picked up the Plone habit in early 2004.  (You can find many of them listed at Del.icio.us, and you should tag other Plone sites with the "plone-sites" tag, too.  But I digress.)  And there's quite a lot I could say about how we do what we do with Plone, in the hopes that it will be useful to others who are using Plone to build websites that are "cheap, fast and good."


Graphic design

Out of the box, Plone is about the cleanest and most usable CMS out there, thanks to the considerable talents and tender love of Mr. Alexander Limi!  And that's what a CMS should be, clean and usable. But it's a little... plain.

Making Plone look good starts with pure-and-simple graphic design.  (Surprise!)  We actually spend some focused graphic design time on every site we do.  We've got a talented graphic designer, Laurie Kellogg, on staff here, as well as a handful of friends that we call on for bigger jobs.  Some of our clients even bring their own graphic designers to the table.  We're fine with that. Thanks to Plone's excellent separation of content and design code, it's generally pretty easy for us to integrate a visual design into Plone quickly.

Sites we've done have spent from a few hundred dollars to $3000-4000 on graphic design work.  A low-end example is Herons Forever; a high-end example is Snow Leopard Trust, which was designed by our friends at Light Sky Designs.

The bottom line is that making Plone look good starts with some creative talent.


Integrating Graphic Design Into Plone

Integrating the graphic design into Plone is pretty straightforward.  We used to just do it by customizing templates through the ZMI; about a year ago we discovered the joys of filesystem-based skin development, and we haven't looked back.  Today, our basic graphic design integration bag of tricks consists of:

  • DIYPloneStyle, which we use as a basis for creating filesystem skin products.
  • Subversion, which we use to manage our skin products -- makes have multiple people working on stuff reasonably easy.  And it lets us roll back our mistakes. (We make lots.)
  • A few "stupid python/ZPT tricks" for doing stuff like random banner images or per-section logos.  These just get dropped into page templates.


Deeper Magic: Customizing Plone Functionality

Plone out-of-the-box is pretty close to the way our clients want their sites to work, but we've discovered a bunch of tweaks we make to pretty much every site we do.  This includes things like:

  • Disabling new member signups (most of our sites aren't public 'community' sites)
  • Hiding the login & join links
  • Adding an email signup portlet (virtually all of our clients have email newsletters)
  • Creating "images" and "files" folders to give users convenient, standard places to put, um, images and files.
  • Making Plone use US-style date formatting (e.g. May 13, 2005).
  • Changing the colophon to read "Powered by Plone | Site by ONE/Northwest"
  • And more minor stuff like this...

We've wrapped all of these little tweaks up into a product we call "ONENWTemplate" and it gets installed into most of our new sites as soon as we start creating them.  We keep it under version control and are constantly tweaking it in small ways.


"Pigeonhole" -- Extra Special Kung-Fu Power

For our more complex sites, that have lots of content and serve multiple audiences, we have developed a generic product called "Pigeonhole" that is basically some custom and customizable metadata fields that can be applied to content objects.  Things like "audience" and "program area."  These are then used, often in combination with Keywords to help link together related content from across the site, and to build portlets of related content.  Pigeonhole also includes a couple of generic content types we use for many sites, such as a Quotes portlet and a simple Poll/Quiz portlet.


"Kickstart" -- Ultra-Rapid Site Wireframe Build-Out

The final main ingredient in our recipie for a tasty Plone site is a little tool we call "Kickstart."  Technically, it's part of the "ONENWTemplate" product I mentioned above. But it's cool enough (IMHO) to deserve a separate mention. 

As you may have discovered, creating twenty or more folders and all of the portal_action entries for a typical mid-sized site through-the-Plone is just slow enough to be maddening, and doing it via Python is too complicated for most of our project managers (myself included).  So we created Kickstart to bridge the gap. It's designed to make building out a site from an initial sitemap really, really fast.  

Basically, it's just a little textarea box that appears in portal_migrations, which accepts text input that we create in a simple Excel worksheet.   Each row is a folder or page, and can be designated to appear in the main nav, the utility nav or in our Pigeonhole-powered audience nav.  Things can be given parent folders (or root) and it can optionally generate an index page for a folder. 

This lets our project managers rip out site maps in Excel, often working collaboratively with the client, and then cut-and-paste the sitemap into the ZMI to build out the site in a flash.  Then the client can get started putting content into their "clickable prototype" while we work on design integration and any custom programming.


Conclusions

So, there you have it. Our Plone development scheme in a nutshell.  Graphic design, design integration, Pigeonhole-enhanced metadata and Kickstart-powered wireframing.

What I'd like to know is: what kinds of tricks do you use?  Some of you readers are lots more clever than we are. I bet there are lots more 'smart practices' for building simple Plone sites.


Nice work!

Posted by wsfulmer at January 06, 2006 - 09:33

I found this to be very interesting. I'm sure any serious web design shop has their own similar development processes, but it's nice to see how someone is doing it with Plone.

Are Pigeonhole and Kickstart something you have available for download, or is that part of your competitive "secret sauce"? :-)

Thanks, and neither

Posted by jons at January 06, 2006 - 09:52
Sean-

Thanks... we stand on the shoulders of giants. My hope is that documenting our processes a little will help other new Plone devs get rolling quickly.

We have not yet released Pigeonhole and Kickstart, but not because we think of them as "competitive advantage" -- more because we haven't had the time to properly clean them up, document them and steward them for others. But I'm hoping we'll have time to do that sometime in the next few months, especially now that the new SVN-powered Collective is up and running.

Knowing that there's some interest also doesn't hurt. ;-)

Add them to the Collective

Posted by Shane Graber at January 06, 2006 - 13:40

Excellent blog entry. :)

How about adding ONENWTemplate, Pigeonhole, and Kickstart to the Collective now? ;) I know I'd love to take a look at the code (even if it is rough and undocumented) on how certain things are done. I've deployed one site strictly TTW and the next sites that I create I want to have done on the filesystem. Getting future site configurations on the filesystem the first time around is something that I'm very much interested in.

Shane

Will do.

Posted by jons at January 08, 2006 - 17:38
Thanks, Shane. I'll see what I can do towards getting them up there.

Full width display

Posted by Yves Moisan at January 06, 2006 - 11:08

The sites listed on del.icio.us are indeed very pleasing graphically. Congrats on your graphics designers. If I may make a small criticism, I would say that pretty much all of your graphics customizations apparently reduce the usable display of the vanilla Plone skin, at least the ones listed on del.icio.us. I personally find it bothersome to see about a quarter or so of my screen (in width) in some background color. I don't know how your customers perceive this, but if I were to edit content as a user (e.g. edit a document or a map with PrimaGIS) I would want the full width of my monitor, especially since Plone 2.1 offers "full-screen mode" as an authoring view option.

All I've been able to do in the graphics customization dep't so far is some basic CSS tweaks the results of which are far less impressive than your team's. What would be a killer app for me is drag and drop portlets, swing them around (e.g. a GUI for right_slots, left_slots ...). At any rate, thanx for sharing your customization recipes.

Yves Moisan

You're quite right.

Posted by jons at January 08, 2006 - 17:43
Yves,

Thanks. And you're quite right; we have definitely traded off a bit of accessibilty for "prettiness" which is what our clients have wanted. One thing to note, though, is that many of these sites are powered by Plone 2.0.5, which doesn't have the fullscreen mode. And, in addition, some of our sites have a more stripped-down admin view (e.g. no portlets) to make more room for content editing, which is of course not visible to an anonymous user.

Oh, and on the topic of drag-and-drop portlets, checkout PlonePortlets (http://plone.org/products/PlonePortlets) from the Collective. It's by Plone Solutions (Alexander Limi's firm) and it does *exactly* what you describe. It's still in beta, but it's super-cool, and still mostly under-the-radar! According to the release notes, Plone Solution's intenntion is to get PlonePortlets into a future release of Plone.

any progress on moving your products to the collective?

Posted by David Diskin at March 23, 2006 - 00:06

Looks like some nice helper tools that many could benefit from.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: