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:
- A PLIP from Sidnei proposing a change to site root “hardwiring” to make subsites more feasible.
- Recent discussion on subsites in Plone 3.1 with some good pointers and info on things you may run into.
- Helpful discussion of core devs on subsites in Plone and where it may be going with PLIP.
- Rumor has it that Sixfeetup, WebLion, and Jazkarta (JazMiniSite) are all doing something similar…separately.
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.




Thanks for the great overview.
Regarding PloneMiniPortals: it works through Plone 2.5.x, but is an architectural dead end. I’ve used it successfully in our local community network to contain 70+ local organizations inside a single Plone instance and it’s worked well. But, I’ll be looking to some of the newer solutions when we’re ready for Plone 3.x.
I have been working on PLIP 234 and it is ready for review right now. Basically if fixes all the spots where setting a INavigationRoot marker interface wasn’t completely getting the job done. We are using this in combination with a custom time and a skin switching plugin that is similar to the WebLion one. With PLIP 234 commit and released in Plone 3.3 doing this subsite dance will be a lot easier.
If you want to check out the work you can see it here:
https://svn.plone.org/svn/plone/review/plip234-inavigationroot-fixes/
Cal
Have you seen this:
http://weblion.psu.edu/news/theme-switching-by-url-folder-page-etc
@Darryl – thanks for the link! I just added it to the overview above.
@calvinhp – thanks for the fix and update! Guess that makes me part of your unintentionally built “get out the test” movement
. How long till Plone 3.3 hits the ground anyway?
Hi Chris – I was surprised that you didn’t mention Sidnei’s SubPlone product on which I think Kurt’s MassDeploy is based.
http://plone.org/products/subplone
https://weblion.psu.edu/trac/weblion/wiki/MassDeploy
We were hoping to Martin’s collective.microsite, but ended up building JazMiniSite for a customer project.
http://plone.org/support/forums/core#nabble-td349929
We plan to release the JazMiniSite code as open source, so that others can build on it.
Yes, I agree there are way too many solutions floating around out there, and we need to consolidate and find a definitive solution on which others can base their implementations.
If Calvin’s PLIP 234 is approved, I think that will be a good start.
Nate
@Nate Aune – thanks for the info. There wasn’t any intention to leave those out…rather it is just hard to find this stuff. I mostly searched for “microsites”, “subsites”, and variants thereof (and didn’t see any of the links you posted). As mentioned in the title, I am actually asking people to help me find this stuff…in return centralizing the information that I find here.
Looking around I can’t find collective.microsite code and also seems that the JazMiniSite code isn’t released yet.
By compiling this information, I am hoping to allow the community to understand how much is really going on and hopefully work together more effectively. I really don’t want to be contributing to reinventing the wheel – and want to help others avoid it too. Software is a liability – spread out the burden!!
By the way, given how long the URL got to this, I created http://tinyurl.com/plone-subsites to make it easier to reference.
One other url to add to the list[1]. Found this when hacking on themetweaker.themeswitcher. Unsure of the state of it or in fact which versions of Plone it supports as there’s no doco (that I could find anyway).
Thanks,
Tim
[1] http://projects.quintagroup.com/products/browser/qLocalSkin
The main thing I find missing from this overview is plone.app.localconf (no webpage?)
It would be very nice to have a standard way of overriding a global configurations in a subfolder. Now we have a variety of solutions related to skinning, an integrated addon-product for workflow (CMFPlacefulWorkflow), but no solutions for other local customisations like local site-actions, language, kupu-settings,…
plone.app.localconf could be the solution to that.
I’ve just updated the WebLion team’s wiki’s SubsiteTheming page with details of the subsite theming products that we are currently working on, and how they fit into our vision of how subsite theming will work in Plone 3:
https://weblion.psu.edu/trac/weblion/wiki/SubsiteTheming
We’re delighted to be collaborating (internationally!) with several other people on these products already, and we’d be very glad to work with an even bigger community.
Hop on our IRC channel at #weblion to touch base with us about vision, code, documentation…. or anything else you think it could be useful for us to know.
WebLion team members most involved in this at present are (in alphabetical order) catherine-w, ErikRose, pumazi and RobZoneNet.