You are here: Home > Knowledge Base > Software Engineering Blog > Plone CMS - a set of products to build a site
 
Newsletter
Newsletter
(Required)
Log in


Forgot your password?
 

Plone CMS - a set of products to build a site

Posted by Mirosław Ochodek at Nov 20, 2009 11:55 PM |
Filed under: ,

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 :)

Document Actions
Supporting only the best, so that they can become even better