Plone CMS - a set of products to build a site
One of the main difficulties often met while setting up a site based on any open source CMS (with plugin-based architecture) is a choice of enhancement modules. The same problem relates to Plone-based sites. If you are planning to build such a site and you’ve just started to look for a good set of products for Plone 3.3, you may find this entry useful.
So you have just set up a base Plone installation... You’re probably amazed how easy it was, and how much functionality your site provides now (and without putting much effort into its development...). Unfortunately this is only beginning of work...
From my experience it will cost you lots of time to complete your set of products and customize the site. Believe me I went through this once I was creating this site for the Ventures project. Find a product, install, test ... the same procedure over and over again. All in all I finished up with a set of products which fulfilled my needs. You may start with that.
Please keep in mind that in most cases, there are alternative products to the products I am presenting here (there might be also newer versions available). I will describe here a set of products which was used to build this site.
Where can you find products?
A good place to start looking for additional products is the Plone main site (www.plone.org). In downloads section you can find products divided into categories, which will help you find what you are looking for.
Although you will find plenty of products there, you have to remember that most of them are available only for certain versions of Plone. Unfortunately, compatibility between different versions of Plone is a real problem.
How can I add products to my site?
The second problem relates to differences in the ways products can be distributed. You can find sources of egg-based products, binary eggs which are not at pypi, eggs which are at pypi (sometimes without giving a name of the egg), zipped old-fashion products, sources at SVN etc.
It can be difficult to cope with that at the beginning, but you will get used to that :)
Buildout
The easiest way to manage products of your Plone 3.3 site is to use buildout mechanism. First of all you have to locate a file buildout.cfg, which is probably located in “your Plone installation”/zinstance directory. You can for sure define a list of Zope3-like products here and in some cases links to old-fashion products distributions.
To run buildout go to “your Plone installation”/zinstance directory and run:
./bin/buildout -N.
Yes, you use -N parameter to avoid downloading never version of products you have installed. If you use buildout without it some of Plone core products will start to update and it is very probable that your site won’t run again. If you would like to update certain product first remove its current version. You can find it in eggs or downloads directories (“your Plone installation”/buildout-cache/). Then run buildout again. The newest version available will be download.
As I’ve already told you the heart of this mechanism is the buildout.cfg file. I will refer to this file while explaining different ways of installing products later on.
Zope3-like products
This is the easiest case :) If egg distribution is available for such product at pypi you will just have to add its name to following sections of your buildout.cfg:
[buildout] eggs = ... new.product zcml = ... new.product
In some cases you will not have to add it to zcml section. In “most cases” such information is available at product site.
If egg is not available at pypi you can just download it, place the egg in “your Plone installation”/buildout-cache/eggs directory, add entries to buildout (as before).
Finally you will have to run buildout -N. If product is not available in eggs directory buildout will try to find its newest versions at certain sites (i.e. pypi) and install it.
Sources of Zope3-like products
Sometimes you will have source of zope3-like products. You can do two things to install them. The first one is to build them. Go into the main directory of product and find the setup.py file.
To build product run command:
python setup.py bdist_egg
Second approach is to copy project sources of a product into “your Plone installation”/zinstance/src directory. It is also useful when you have to modify a product. Before running buildout command you will have to add product to eggs and zcml (if needed) sections of buildout.cfg and additionally:
develop = ... src/new.product
Old-fashion Plone products
To add old Plone products you can copy a product directory to “your Plone installation”/zinstance/products or you can provide a link to tarred file in productdistros section of buildout.cfg:
[productdistros] recipe = plone.recipe.distros urls = ... http://site.com/NewProduct-1.0.tar.gz
Testing, debugging
After you modify buildout.cfg and run buildout command you will have to install and test a product. Unfortunately, a typical behavior of not-compatible products is to prevent your site to run. If you are using “your Plone installation”/zinstance/bin/plonectl restart command, the first time you will notice that something wrong happened, is that after “successful” restart you cannot access your site or you just see an error when trying to do this.
First of all you should turn on debug mode. Edit buildout.cfg:
debug-mode = on
Then run buildout -N.
The good idea is to run your instance in a following way:
“your Plone installation”/zinstance/parts/instance/bin/runzope
You will be able to see log messages displayed while server is starting.
Installation
Most of the products require to be installed through the quick installer. After you logged in to your site on a user with Manager role go to the “Site Setup->Add-on Products” and install it.
A set of products used to build this site
Here is a list of products which was used to build this site.
Theme
There are not many open source themes for Plone. Unfortunately most of them are unpolished (on screenshots they look nice, but when you install them you will see that some details are not looking good).
The visual skin you can see at this site was build based on heddex.tranquility. The original theme uses green palette, this one is blue. Some minor customization was also done.
Addition theme I seriously considered was beyondskins.ploneday.site2009.
Rich Text Editor
Although I like TinyMCE I chose Products.FCKeditor. Other editors had problems with handling more than one editor at the same time.
eggs = Products.FCKeditor
Forum
Ploneboard should be enough for most of sites. If you need really advanced forum you should rather look outside the Plone and try to integrate it with your site.
eggs = Products.Ploneboard
Ratings
eggs = plone.contentratings zcml = plone.contentratings
Blog
I tested Quills, but it didn’t work for Plone 3.3, so I decided to use simpler but working smoothly Scrawl product.
eggs = Products.Scrawl
Newsletter
I would recommend Singing & Dancing. It works great!
extends = https://svn.plone.org/svn/collective/collective.dancing/buildout-extends/0.8.10.cfg zcml = collective.dancing
Comments
I have extended standard Plone comments mechanism by installing quintagroup.plonecomments.
eggs = quintagroup.plonecomments zcml = quintagroup.plonecomments
Tags
Site uses standard categorization, however vaporisation tag cloud is used. This product provides a portlet with tag cloud. It has many configuration option. In case of this site egg source was download and put in src directory.
eggs = vaporisation zcml = vaporisation develop = src/vaporisation
Media
Flash videos. I have installed Products.FlashVideo developed by my colleague Łukasz.
eggs = Products.FlashVideo
Gallery portlet. I developed portlet for presenting slideshow of pictures.
eggs = se.portlet.gallery zcml = se.portlet.gallery
Latex Math Image. As this site presents also scientific content I was pleased that there is a product which enables you rendering equations based on Latex syntax to images. This is old-fashion Plone product. You can use productdistros:
urls = http://plone.org/products/latex-math-image/releases/0.9/latexmathimage-0-9.tgz
plone.app.imaging enables you to declaratively define additional sizes of images being generated when you add image to your portal.
eggs = plone.app.imaging zcml = plone.app.imaging
Admin
Anonymous view is quite useful because to show you have certain page will look for anonymous user.
eggs = collective.anonymousview zcml = collective.anonymousview
If you would like to upload many files at once you should install collective.uploadify.
eggs = collective.uploadify
Security
Plone Captchas adds captcha mechanism to your Plone site.
eggs = quintagroup.plonecaptchas zcml = quintagroup.plonecaptchas
Software distribution
Plone Software Center provides functionality to publish releases of your software.
eggs = Products.PloneSoftwareCenter
Surveys
If you would like to conduct surveys among visitors of your site a good choice is Plone Form Gen. You can use large variety of fields to dynamically create survey questionnaire.
Pages
RichDocument is a successor of a built-in page type. It enables adding attachments and pictures to page sites. This is old-fashion product. Download it, unpack and place in products directory.
Publications
I have modified / hacked / customized product CMFBibliographyAT (modified views, data model)
Users
As we wanted to extend properties of user profiles membrane product was installed, as well as remember. If you don’t need to extend user profiles you don’t need this pair of products.
eggs = Products.membrane Products.remember zcml = Products.membrane Products.remember
Additional enablement modules:
I would like to warmly thank all people who contributed to above (and other) open source products :)