George Thiruvathukal, User Experiences with Plone Content Management
User Experiences with the
Plone Content Management
George K. Thiruvathukal (speaker)
with special guests:
Benjamín González, Matt Bone, and Konstantin Läufer
Loyola University Chicago
Computer Science Department
Emerging Technologies Laboratory
Our Requirements Customizing Plone: Skins/Layers
Quick Tour of Plone Customizing Plone: Archetypes
What is Plone? Plugins
The Open Source Deﬁnition Hosting Plone with Apache
Plone’s Default Content Types Critique
Publication States Conclusions
• Content Metadata
• Maintaining content should require little/no knowledge of HTML
and web standards. Although we are technical, we don't want to
be bothered with these details in most cases. Content is king...or
• Published site should be viewable from any standards-compliant
browser on any platform.
• Managing content and performing administrative tasks should also
be possible on any standards-compliant browser on any platform.
• We want to be future-proofed inasmuch as possible. For
example, nothing should stand in the way of supporting non-
desktop clients, e.g. phones, PDAs, or other quot;limitedquot; devices.
• While less interesting to typical users, good architecture matters
a great deal to us. This includes the software design, system
scalability, and extensibility.
• a Free/Open Source (FOSS) Content Management
• focus on non-technical users who want create/manage
• minimal knowledge of HTML or web standards assumed
• customization on the other hand requires knowledge of
web standards (XHTML, CSS, XML)
• Python required to extend Plone via plugins
Open Source Licensing
Free Redistribution No discrimination against
ﬁelds of endeavor
• Source code must be
included Distribution of license
Derived works allowed License may not be speciﬁc
to a product
• Integrity of the Author's
Source Code License must not restrict
• No discrimination against
persons or groups License must be technology-
Plone Default Content
Everything you see
• Link Objects
in Plone is (has) a content
• News Items
• Private: Content not viewable by the outside world, even
if URI to reach the item is known.
• Visible: Content viewable by outside world, if URI is
• Published: Visible + URI is linked on page that is already
being viewed (often as part of a navigation portlet)
• changing the look/feel
• adding functionality via plugins
• adding user-deﬁned content types
• Plone's presentation layer is based on skins.
• Skins in Plone are arranged in a layered scheme.
• Each layer contributes presentation elements (templates,
scripts, css ﬁles).
• Elements in the upper layers override elements in lower
• Go to the Zope Management Interface (ZMI).
• Go to portal_skins.
• Click properties.
• Add your new skin at the bottom.
Adding New Layers
• Create a new folder under portal_skins.
• Add it as a layer under your skin in
• Create/customize your elements under
• Apache Web Server acts as front end
• Zope application acts as server back end
• Plone is simply a Zope product that
provides the core CMS functionality
Apache + Plone ==
• integrated support for virtual domains (e.g. cs.luc.edu,
etl.luc.edu, math.luc.edu, reu.cs.luc.edu, citep.com, etc.)
• use of Apache virtual host (vhost) and rewriting logic to
map incoming requests to individual Plone sites
• rewriting logic allows each site to appear as separate web
server but in fact all are (or can be) hosted on the same
• Plone/Zope itself serves the actual content via Apache
• option to cache Plone content for performance
• A framework in Plone that allows us to easily create content
• A content type is something like a document, link, event or news
• Archetypes is distributed as a Plone Product. (Our own custom
content types will be distributed within a Plone Product, too.)
• To create a new content type you write a Python class
representing the content type and its schema.
• The schema deﬁnes the ﬁelds contained within the type.
ETL Project: An
Example Content Type
• Sometimes you want a page or content item that has a bit of
• Our research group has a number of projects with common
• project hosting site
• repository location
• developer and documentation wikis
• version tracking
• developer and support mailing lists
• developer blog, etc.
from Products.ATContentTypes.content.base import ATCTContent
from Products.Archetypes.public import *
from Products.ETL.ETLGlobals import *
ETLProjectSchema = ATCTContent.schema.copy() + Schema((
widget=StringWidget(label='Project Hosting (URL):'),
widget=StringWidget(label='Version Control (URL):'),
widget=StringWidget(label='Documentation Wiki (URL):'),
Excerpt of Python code
widget=StringWidget(label='Development Wiki (URL):'),
to describe an ETL
widget=StringWidget(label='Version Tracking (URL):'),
widget=StringWidget(label='Developer Mailing List (email):'),
widget=StringWidget(label='Support Mailing List(email):'),
widget=StringWidget(label='Developers Blog (URL):'),
allowable_content_types=('text/plain', 'text/structured', 'text/restructured', 'text/html'),
widget = RichWidget(label='Project Summary:'),
• Live search: Allows users to search the site locally (similar to
desktop search) by typing a few characters of the search string
(now part of Plone >=2.5).
• Kupu: WYSIWYG editing. Plone 2.1 and earlier used to require
the use of structured text, which is great but sometimes lacks the
richness and clarity of HTML.
into a site by describing the navigation as a basic HTML table.
(Our cs.luc.edu site uses this capability.)
• Google Analytics for Plone: http://ingeniweb.sourceforge.net/
Plugins: Zope + Plone
• Plone is a Zope product and addition plugins (for Plone and
Zope) are available through the extensible Zope architecture.
• Zope is a Python-based extensible application serving platform
(similar to J2EE and .Net).
• In addition to full support for HTTP, Zope provides support for
DAV, FTP, and other emerging web standards.
Critique: The Good
• Content types are part of a sophisticated vocabulary for thinking
about a web site.
• Plone places a premium on ease-of-use for day-to-day content
management (i.e. content writers).
• Plone is a project with considerable community interest with
hundreds of plugins available. (one of the most active as measured
• The ability to do practically everything (as user and developer)
within the browser and no client plugins (e.g. Java or ActiveX) on
any major platform (Linux, OS X, and Windows) is compelling.
• End-user documentation for end users is excellent. One of the
few CMSs with a signiﬁcant number of published books.
• Installation is a breeze on most major platforms (Windows, OS
X, and Linux).
Critique: The Bad
• While content writing can be done with WYSIWYG editors, the
same is not true of layout at this time, hence the code examples
• Rich and powerful XML based template system requires
signiﬁcant technical (read: Python) knowledge to master.
• Despite the Plone project's maturity, technical documentation
remains somewhat weak (an irony, considering the user docs are
• Some might take issue with the integration of content
management and content serving within the same framework.
Straightforward integration with Apache remedies this issue in
part but the content still comes from the CMS itself.
Critique: The Ugly
• Some Plone releases (e.g. 2.1) have presented great difﬁculty
when migrating from the previous releases (2.0).
• Some plugin interactions can result in an unusable setup. When in
doubt about a plugin, we recommend testing it in a non-
production “sandbox” ﬁrst.
• Zope uses its own database, which seems to deliver excellent
overall performance. Not having a standard database backend
(e.g. MySQL or other relational DB) makes it difﬁcult to do
proper backup, which requires a special script. While MySQL is
allegedly supported, we have not gotten it working yet. (The ZEO
effort appears to be a recent effort to enhance support for load
balancing and 3rd-party databases.)
• University has recently acquired a commercial CMS.
• We'll continue to support and use Plone for specialized needs
(e.g. research groups like ETL, student activities, and individual
web sites) within our department.
• Plone is a great solution, especially for small departments and
groups with a need to get content up/running quickly and reliably
with a consistent look/feel. As shown, with some work, Plone can
be customized to give the appearance of a hand-crafted web site.
• The ability to manage content from anywhere with a minimum
number of browser dependencies is a key strength of Plone. Many
CMS solutions require ActiveX or Java plugins that either do not
work properly outside of Windows/IE or have not been tested
sufﬁciently on alternate platforms, e.g. Linux and OS X.