Skip to main content

The microsite creation product for Plone

Project description



Lineage is a Plone product that allows subfolders of a Plone site to appear as autonomous Plone sites to the everyday user. This hub and spoke structure allows site administrators to easily manage multiple, seemingly independent, sub-entity websites in one Plone. Furthermore, the “parent” site can access and view the content in all the “child” sites while the child sites only view their own content. The parent site can also syndicate chosen content to the selected child sites. Lineage is less complex and easier to manage than a cluster of nested Plone sites but gives users all the same benefits.

Lineage can be used within a large organization to manage multiple microsites, such as school district sites, university departments, corporate product sites, public library satellites, professional association events, and more.

Lineage works with Plone 4.1+ and the upcoming Plone 5.

Upgrading to 2.X

Lineage 2.0 is a major upgrade to the software and will require you to have updated to the 1.1.2 version before you migrate any existing Lineage child sites to the new version. Lineage 2.0 removes all dependancies on p4a.subtyper and makes the product Plone 5 ready. The 1.1.2 release of Lineage is only used to migrate your existing Lineage 1.1 sites up to the needed state for the new 2.0 release.

Steps for upgrading:

  1. Install version 1.1.2 into your existing Lineage powered site

  2. Go to the Plone Site Setup and from the Add-Ons panel click the button to upgrade the Lineage product

  3. Install version 2.0 into your existing Lineage powered site

  4. Go to the Plone Site Setup and from the Add-Ons panel click the button to upgrade the Lineage product

  5. Enjoy Lineage 2.0

Detailed Documentation

After you’ve bootstrapped your buildout, installed all the dependencies, and installed Lineage via Site Setup -> Add on Products, you are ready to go.

Add a Child Site

  1. In Plone, go to the place where you want to add a new child site.

  2. Click Add New, and add a Folder.

  3. Enter the title and description for the Child site.

  4. Click Save.

  5. Click the Actions drop down and select Enable Subsite. This “activates” the child site behavior.

  6. The Plone site now has a child site. A drop down will appear at the top of the Plone to the left of the site actions area. A user can select the parent site or any child sites from this drop down.

Installation Instructions

First step

If you are using zc.buildout and the plone.recipe.zope2instance recipe to manage your project, you can add collective.lineage to your instance part:

eggs =
# the next 2 lines are not necessary
# if you are using lineage-0.6+
zcml =

If you are using Plone 3.2

You will need to use the code added for PLIP 234. To do so, you’ll have to add the branches of the eggs for the plip:

parts =

recipe = infrae.subversion
as_eggs = true
urls = Plone

If you are using Plone 3.1.7

You will need to use the branches created by duffyd (note the reference to ${plone317-products:location} in the products value of the instance section must be first in the list):

parts =

recipe = plone.recipe.zope2instance
products =

recipe = infrae.subversion
urls = Plone

recipe = infrae.subversion
as_eggs = true
urls =

Last step

Now you can re-run your buildout to get the all the dependencies:

$ bin/buildout

Once your buildout is finished, you can start up your instance and install Lineage via the Add-on Products configlet in site setup.

Migration from 0.1 to the latest version

In versions of collective.lineage that are greater than 0.1, the Child Folder type has been deprecated and you can know activate a folder using the subtyper action when you are on a Folder.

An upgrade step takes care of migrating the old Child Folder to Folder. Make sure to backup your data and then, once you have updated your instance to use the latest collective.lineage, reinstall “Lineage”, it will migrate the items automatically.

NOTE: we are assuming that the Child Folder and the Folder workflows are the same.

Migration to 1.0

Pre-1.0 installations will need to run the GenericSetup profile when migrating to 1.0 or your site will produce a SiteError when attempting to view because of the changes that have been made. Please login to the ZMI and go to the portal_setup tool and select the Lineage profile from the import tab and run all steps. You site will be ready to go.

Working on the trunk of lineage

To work on the trunk of lineage, do the following:

$ svn co lineage-trunk
$ cd lineage-trunk
$ python2.4
$ bin/buildout -v
$ bin/instance fg


  • go to http://localhost:8080/manage (admin/admin)

  • add a plone site

  • quickinstall lineage in the new plone site

  • create a folder and subtype it to see if everything works fine

You can run the tests in debug mode with the following command:

$ bin/test -D


2.0 - (2014-10-29)

  • Content type framework agnostic: Compatible with Dexterity and Archetypes by allowing definitions of Subsites on plone.folder.interfaces.IFolder objects.

  • Remove dependency on p4a.subtyper. Enable and disable subsite menus are now in the object_buttons action menu.

  • Remove controlpanel. Use language translations for translating interface elements instead.

  • Remove upgrade steps and migration for 1.x based versions. Please migrate your site to the latest 1.1.2 version before using 2.0. [calvinhp]

  • Remove deprecated ChildFolder content type. [thet]

  • Remove upgrade steps. Please upgrade to most recent 1.x version in the 1.x branch, deinstall collective.lineage and use the 2.x branch then nad reinstall. Please make a list of all your subsites before, as you have to re-enable them manually. There is no upgrade step for this yet. [thet]

  • Make objectactions and site-switchter translateable and add German translations [fRiSi]

1.1.2 - (2014-10-29)

  • This is a migration step to 2.0 release only. Once installed, run the upgrade from the Plone Add-Ons control panel and then upgrade to 2.0 to re-enable management of child sites. [calvinhp]

  • Add upgrade step to remove p4a.subtyper interfaces and created a GenericSetup profile to remove the component from the component registry [calvinhp]

1.1.1 - (2014-06-26)

  • Add an adapter to allow the child site to use the portal image scales. Fixes [ableeb]

  • In the uninstall profile, remove componentregistry collective.lineage.childsite utility from the component registry. [thet]

  • Add Chinese translations. [adam139]

1.1 - (2013-06-02)

  • Fixed imports to allow lineage to be compatible with Plone >= 4.1 [calvinhp]

  • Update dependencies and import locations and make collective.lineage compatible with Plone 4.3. [thet]

  • Add new events for WillBe created and removed. This will make add-ons like lineage.registry able to properly deal with the child site before the component registry is removed. [claytron]

  • Restored Plone 3.3 compatibility (if is present) [keul]

  • i18n fixes and added italian translation [keul]

  • Uninstall step fixed (closed #8 and #11) but also removed other stuff left behind [keul]

1.0.1 - (2012-10-13)

  • Remove setup_site from the install function since this is no longer needed. Also bumped the metadata version so that the upgrade step actually runs. [claytron]

  • PEP8 [clayton]

1.0 - (2012-10-08)

  • PEP8 and pyflakes cleanup [claytron]

  • modernized tests, using layers now. [jensens]

  • fixed failing test with subscribers, subtype added event is not an object event! [jensens]

  • moved code to github and increased Plone version used in integrated buildout to 4.1-latest. [jensens]

  • The subscribers are now registered to the IChildSite interface so that custom child site types are still made into IObjectManagerSites. [rossp]

  • Added an isChildSite method to the LineageUtils view, to determine if the current context is part of a child site. [davidblewett]

  • Id attribute added to the lineage selection form to make Diazo/XDV theming easier. [timo]

  • German translation added. [timo]

  • added support for plone domain [macagua]

  • Added Spanish translation [macagua]

  • Changed the collective.lineage.childsite component to use the IFolderishContentTypeDescriptor interface instead of IPortalTypedFolderishDescriptor, allowing any folderish type to become a child site. [davidblewett]

  • Fixed issue where deactivating a Child Site wouldn’t remove it from the Lineage dropdown menu [calvinhp]

  • Format README so that it fits within 72 columns. [claytron]

0.6.1 - (2011-01-12)

  • Making sure that we copy the fact that the item inherits from its parent or not [lucielejard]

  • Updated the ignores [lucielejard]

  • Fixed the upgrade so that when we grab the layout of a folder, it does not get it using acquisition if it doesn’t have one, fixes #18 [lucielejard]

  • Copy over sharing settings from child folder to new folder, fixes #38 [anthonygerrard]

  • Fix by not renaming the child folder, instead create new folder with temp id and rename that to the child folder id after the child folder has been deleted, fixes #37 [anthonygerrard]

  • Adding a failing test case for #37 here as it is a serious bug but I have no idea how to fix it [anthonygerrard]

  • In lineage 0.1 child folders never inherited their parent’s portlets so always block parent portlets when migrating, fixes #34 [anthonygerrard]

  • Added a warning if portlet manager is not available on the new folder, fixes #35 [anthonygerrard]

  • Copy portlet assignments from and blocking settings across on migration, fixes #34 [anthonygerrard]

  • Refactor tests so that migration tests are in their own class and so can have common setup logic [anthonygerrard]

  • Read the default page of the child folder before conversion and then set it afterwards, fixes #18 [anthonygerrard]

0.6 - (2010-05-25)

  • used z3c.autoinclude and removed the zcml slug in buildout.cfg [tbesluau]

  • update the security settings at the end of the migration so that the workflow is applied correctly on the new migrated folders, fixes #20 [lucielejard]

  • updated the migration so it keeps the layout on the folder fixes #18 [lucielejard]

0.5.1 - (2010-05-12)

  • updated docs as per duffyd suggestions [lucielejard]

0.5 - (2010-05-11)

  • updated docs with links to the branches created by duffyd for the backports of the plip #234 mods to Plone 3.1.7 [lucielejard]

0.4 - (2010-04-30)

  • updated docs about PLIP

  • Update docs with information about “activation” behavior. [clayton]

0.3 - (2010-04-30)

  • getting the unit testing to work with plone4 and allowing childsite editing with plone4, refs #16 [tbesluau]

  • updated README.txt with useful links [lucielejard]

  • added tests for the uninstall of lineage [lucielejard]

  • updated the list of items todo, removed rolemap.xml since we don’t use it anymore, updated the history with the recent changes [lucielejard]

  • moved the registration of the utility in component registry so it gets registered locally, this fixes #5 [lucielejard]

  • added a deprecation warning on the Child Folder type [lucielejard]

  • put back some old zcml so the Child Folder migration can be tested [lucielejard]

  • added a test for the migration from 0.1 to >0.1 [lucielejard]

  • updated the version in metadata.xml for the upgrade step [lucielejard]

  • made the Child Folder type not globally addable [lucielejard]

  • added an upgrade step that will migrate the old Child Folder objects [lucielejard]

  • added an import various step so that the upgrade step gets run automatically on reinstall [lucielejard]

  • Set up for i18n translations [claytron]

  • Moving over to an ‘activation’ based system instead of having a ‘Child Folder’ type. Now a folder will have the option for a subtype named ‘Child Site’. [claytron]

  • Remove ‘Child Folder’ add/edit interfaces. The type still remains so that we can do a migration. [claytron]

  • Added uninstall profile and hooked it up to the Quickinstaller [claytron]

  • Added subtyper.xml to the uninstall profile that will deactivate all ‘Child Sites’ in the portal. This depends on p4a.subtyper code that has not yet been released. This also solves the export/import issue [claytron]

  • Added a subscriber to create the local component site (this was in the ‘Child Folder’ type before) [claytron]

0.2 - (2010-04-08)

  • Doc clarifications [claytron]

0.1 - (2009-02-10)

  • Initial public release

Special Thanks

Six Feet Up would especially like to thank Martin Aspeli for his inspiration and the Duke Clinical Research Institute group for project funding.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (49.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page