Posts Tagged ‘skin’

Plonistas have a lot of way to do things with the flexible tools available to them, and I am hoping to glean some of the knowledge, experiences and (where possible) reusable code for making subsites / microsites / sites-within-a-site happen in Plone.

The use case is basically: You want to be able to create a number of subsites within a Plone instance. Each subsite needs to act like a portal unto itself, except that it will have no independent membership component. Each will typically be maintained by only a few persons, have some design customizations (banner, css), and reuse products from the site. In some cases there is a need to have a self-contained navigation, whereas in others you want a common global navigation and a subsite-specific one in that. To summary: navigation, skin, and user experience (search, other stuff?) need to be limited to the portal.

We have done several projects over the years that delve into this, though it is getting to the point where I would like to get more “reusable” about the solution since the use case seems to be recurring. Here is a sample of things we have done, some before all the Plone 3 goodies were available:

Communitychange.org: Inside the Projects folder, individual banner image possible. Keeps main navigation and using navigation portlet for navigation within the project (Plone 3.1).
Dotrust.org: Communities within the site can be created with a folder-ish object that has a configuration to allow for prepopulated content including some folders, pages, (optional) blog. Is handled as a custom cotent type (Plone 2.5).
– Natural Awakenings Magazine (franchise sites): folders within a Plone site, each can have own banner images and navigation (Plone 2.0), example www.namelbourne.com .

Some lessons learned: separate sites is definitely better if the stakeholders for each site are distinct (and may decide to do something totally different with the site). For easy sharing of info and potentially allowing users to be granted access to new sections, the folder approach is stronger, though it does run into some limits in flexibility (navigation, product configuration, for example). Lots of little things I won’t go into now…

I have looked around quickly and gathered a little bit more about reusable components or ideas for this. There seems to be a concensus around the way of handling this for navigation in Plone 3 using the INavigationRoot interface (see below). Other components for doing I came across include:

  • Switching skins by URL (for folders, pages, etc), check out themeswitcher from WebLion, explained here.
  • A skin tool in the collective called collective.sectionsubskin .
  • PloneSubSkins, another skin tool in the collective, proclaims to allow you “to switch to specific CSS files handling such or such aspects of your Plone skin.” Product is relatively
  • Adding the INavigationRoot interface to a folder lets you declar that as a navigation root: This will make the navigation Portlet, Bread Crumbs, and logo link act as if this folder is the root of the site whenever someone views either this folder or an object contained within it. Thanks to the folks a WebLion for sharing that and other tweaks. In related news, Calvin has been working on PLIP 234 to clean up INavigationRoot (scheduled to land with Plone 3.3, Spring ’09)
  • Collective MetaNav may be useful for greater navigation flexibility.
  • MassDeploy: a mashup of code from SubPlone (see below) and other things. Read more here. Not really a product, kind of like a concept and some hacks to make an old product work.
  • collective.microsite: Plone 3 code developed by Martin. Unable to find a release of it yet (or repository). Mentioned here.
  • SubPlone: A product by Sidnei that reportedly works on Plone 2.0 and 2.1 (and maybe 2.5), but not in Plone 3.
  • PloneMiniPortals: A Plone 2.1 product from SteveM that hasn’t had any releases in the last ~1.5 yrs. Seems to address many of the necessary aspects all together.

Other pieces of the context I found include:

My questions are:

  • do you have any other examples of ways to do this?
  • Any lessons learned from that way?
  • Know of any other products to acomplish the use case goals?
  • Are there approaches that are “upgrade friendly”?
  • Any experience using the skin products here or recommended skinning approach?

Please leave your comments below or contact me directly.

Please note: (1) I am not endorsing any of these or providing a review, this is simply a discovery exercise that I am asking for the community collective intelligence to help refine what is good or not. (2) Developers, please know that README’s that explain your product are VERY MUCH APPRECIATED. Thanks.

Read Full Post »