Open Source Content Management with Plone
Pages: 1, 2
For UI specialists, Plone uses a powerful metaphor for customizing the default interface to your preferred look and feel.
Skins are a collection of layers, which contain through-the-web (TTW) customizable UI components such as standard page headers, footers, and images, as well as functional components such as Python scripts. Each layer often (though not necessarily) maps to a directory on the filesystem made visible through the Plone interface.
With this approach, it's easy to customize things like the header of your Plone site, the main logo, the behavior of the search box, or even what the system does when a new member registers. For example, you may require payment to join the site, and thus you may want to customize the join to take the user to a payment screen after submitting a registration. Of course, your site can have multiple skins from which the user can select, or which depend on whether the viewer accesses the site from the corporate intranet or the Internet at large.
The UI team has also gone to great lengths to ensure that the Plone interface looks the same in all of the major browsers, including IE6, Mozilla, Safari, Firefox, Opera and several others. This represents a good example of cross-browser compatibility that other projects (open source and proprietary) would do well to follow.
In any multi-user application, it's important to have the power to configure the system to the finest detail so that each user can do everything that she needs to do--no more and no less.
In Plone, a member belongs to zero, one, or more groups. Each group has zero, one, or more roles attached to it. Each role has zero, one, or more permissions granted to it, depending on the context of the object being accessed in the site. Zope's access permissions apply to methods of classes, limiting the level of granularity to which you can configure your site's security only by your determination to keep users out of places they don't belong.
Because Plone is built on top of Zope and the Zope CMF, you can build reusable extensions for your Plone site in a manner very similar to any other Zope-based site.
A product is a bundle of functionality, written in Python, that plugs into your Plone site. I already briefly mentioned the CMFMember product as an example. There are Plone products available that provide everything from bug collectors to discussion forums and full-blown e-commerce applications! Because a product is just a chunk of Python code, the complexity (or simplicity) of a product is up to its author. In the common case, a product will register its own layers in a skin, offering the same ease of customization as Plone itself.
Installing a Plone product is usually as easy as dropping it into the Products/ directory in your Plone installation and going to the part of the Plone UI that allows you to install and remove products.
New Content Types with Archetypes
By definition, a CMS is all about its content. Easy things should be easy and hard things should be possible.
In a CMS framework, creating new content types should be easy, and extending those new content types to provide more complex behaviors should be possible. To accomplish this, Plone provides the Archetypes framework as part of its standard release. The goal behind Archetypes is to allow a programmer to create new content types quickly, turning feature requests into working code in a matter of hours or even minutes.
Fun for Users
Plone provides a complete, ready-to-run application right out of the box that includes all the features we've covered in this article. There are freely downloadable Plone release installers for most major platforms. Even non-programmers with a bit of technical savvy can have at least a basic installation up and running in minutes.
Fun for Developers
If you're going to do something, you might as well do something you enjoy. Being a Plone developer is a heck of a lot of fun.
The Plone development team includes a wide range of individuals--Python programmers, usability experts, translators, graphic designers, and document writers. If you're interested in helping out, you're sure to find somewhere that your skills can be put to use. Plone has appeared at technical conferences around the world, and now has its own annual Plone conference, the second one being held in Vienna, Austria from September 20 to 22, 2004. In addition, you can participate in one of the many development sprints (intense, several-day development sessions that bring together Plone developers from around the world into the same room to accomplish a set of specific tasks) going on all over the world, held at venues including the Plone Conference, in the Swiss Alps, and even a castle in Austria!
If you're not a developer, a wide range of companies offer Plone training and consulting services, so you're almost sure to find someone with the skills to meet your company's content management objectives with Plone.
Who's Using Plone?
Plone has found its way into serving up content for research institutions, Ivy League universities, ISPs, space agencies and more. Here's a brief list of sites built with Plone:
- NASA / Jet Propulsion Labs
- Howard Dean: The Movement
- Canada's Michael Smith Genome Sciences Centre
- The French Association for Development of Creativity
- SOHO Village
This represents only a partial list of Plone users, of course, but provides a sampling of the wide variety of organizations from all over the world that are using Plone.
Plone is a powerful and robust framework for allowing users at all levels of your organization to add, edit, and remove content from your web site in an easy-to-use and secure way. Future articles will explore in greater depth Plone development topics such as defining workflows, customizing the look and feel of your Plone site, and how to create new content types.
Brad Bollenbach is a Plone and Zope consultant, trainer and writer. He has done Plone work for clients around North America and Europe and has given Plone training courses in both English and French. He was a speaker at EuroPython 2003 in Belgium.
Return to the Python DevCenter