Skip to main content

A sane, working, editor-friendly way of creating front pages and other composite pages. Working now, for mere mortals.

Project description

<nav class="contents" id="table-of-contents" role="doc-toc">

Table of Contents


Life, the Universe, and Everything

collective.cover is a package that allows the creation of elaborate covers for website homepages, especially for news portals, government sites and intranets that require more resources than a simple page or collection can offer. However, despite offering rich resources to build a cover, collective.cover also provides a very easy mechanism for managing its contents, built around a drag-and-drop interface.

collective.cover is based on Blocks and Tiles, like Mosaic, the new layout solution for Plone.


For impatient types, there is a demo installation of collective.cover on Heroku. It needs about 60 seconds to spin up and it will purge all changes after about an hour of non-usage.

Use cases

Suppose you are running The Planet, a news portal that has a bunch of editors focused on getting news on different topics, like Economy, Health or Sports.

If you are the main publisher of the site, you may want to delegate the construction of the front page of the Economy section to the people working on that content area, but you might not want them messing around the Sports section as well.

Also, suppose you have the final game of the World Cup and the match is going to be defined on penalties: you may want to prepare a couple of cover pages and publish the right one focused on the team that won in the end.

These are the kind of issues we want to solve with this package; we are still far from it, but that is the idea.

Who is using it?

These are some of the sites using collective.cover:

<figure class="align-center"> <figcaption>

The Presidency of Brazil uses collective.cover on the front page of its site.

</figcaption> </figure>

Mostly Harmless

Got an idea? Found a bug? Let us know by opening a support ticket.

Known issues

See the complete list of bugs on GitHub.

Don’t Panic

We are currently working on the documentation of the package; this is what we have right now (contributions are always welcomed):


To enable this package in a buildout-based installation:

  1. Edit your buildout.cfg and add add the following to it:

    eggs =
    collective.js.bootstrap = = 1.1.1 = 1.0a2 = 1.0.1
    plone.tiles = 1.2
  2. If you are using Plone 4.2.x you need to add the following also:

    collective.js.jqueryui = = 1.7.2 = 1.5.7 = 0.6.3
    plone.directives.form = 1.1
  3. If you want to use a newer release of collective.js.bootstrap, you will need to update

    [versions] = 1.8.3

After updating the configuration you need to run ‘’bin/buildout’’, which will take care of updating your system.

Go to the ‘Site Setup’ page in a Plone site and click on the ‘Add-ons’ link.

Check the box next to collective.cover and click the ‘Activate’ button.

Not entirely unlike

Over the years there have been some packages designed to solve the problem of creating section covers in Plone. We have used and have taken ideas from the following:


Very old; the legacy code is so complex that is not maintainable anymore. It has (arguably) the best user interface of all. Layouts can not be created TTW. Viewlets are just page templates associated with content types; you can drag&drop viewlets around the layout. Publishers love it.


Code is very old, but still maintained (at least works in Plone 4). Allows to create complex layouts TTW and use any layout as a template. Easy to extend and edit (but is terrible to find a content to use). Needs a lot of memory to work and aggressive cache settings.


Allows the creation of layouts TTW but it has (arguably) the worst user interface of all. It is easily extended and there are several add-ons available that provide new functionality for it.

Home Page Editor of the Brazilian Chamber of Deputies Site

Strongly based on Collage, this package was presented at the World Plone Day 2012 Brasilia. It allows editing of home pages and the definition of permissions on blocks of content. Works under Plone 3 only.


A new package that lets site editors add portlets to a set of new locations: above and below page contents, portal top and footer. The package comes with a number of flexible layouts that are used to position the portlets, and locations can be fixed to the nearest site object, to facilitate inheritance. In collective.cover (this package), we don’t want to use portlets at all.

Share and Enjoy

collective.cover would not have been possible without the contribution of the following people:

  • André Nogueira

  • Asko Soukka

  • Carlos de la Guardia

  • Cleber J. Santos

  • Daniel Jowett

  • Davi Lima

  • Denis Krienbühl

  • Érico Andrei

  • Franco Pellegrini

  • Fred van Dijk

  • Fulvio Casali

  • Giorgio Borelli

  • Gonzalo Almeida

  • Héctor Velarde

  • JeanMichel FRANCOIS

  • Juan A. Díaz

  • Juan Pablo Giménez

  • Kuno Woudt

  • Laura Pérez Mayos

  • Marcos F. Romero

  • Maurits van Rees

  • Rodrigo Ferreira de Souza

  • Silvestre Huens

  • Thiago Curvelo

  • Thiago Tamosauskas

  • Launched Pixels (icon)

You can find an updated list of package contributors on GitHub.

Development sponsored by Open Multimedia, Ravvit and Simples Consultoria.


There’s a frood who really knows where his towel is.

1.0a11 (2015-07-07)

  • Emit the layout identifier in the body class (closes #216). [hvelarde, djowett]

  • Add custom classes for row and columns (closes #504). [rodfersou, djowett]

  • Fix the carousel compose edit widget when items have been added that are now expired. List the items with a red border and a warning text. This only fixes listing expired content for non-managers (like using having the Editor rol) in compose mode, it doesn’t change visibility of items when viewing. [fredvd]

  • Do not purge fields in registry.xml to avoid overwriting information at reinstall time (fixes #465). [hvelarde]

  • Add upgrade step to remove orphan annotations left behind. The bug was fixed in release 1.0a10 but no upgrade step was provided to clean up the objects. [ericof, hvelarde]

  • Ship with support for more than one grid system. Besides 16-column Deco grid, we now include support for 12-column Bootstrap 2 and Bootstrap 3 grids. Check developers documentation for more information on how to use them (closes #504). [rodfersou]

  • Fix performance issues in the content chooser. Searches only start after the third character and will be delayed by 500ms to wait for the user to stop typing. Avoid including types not defined as “searchable” in the configlet. The scope of the search was also changed: instead of searching on SearchableText index (full text), we search on Title index only (fixes #493 and #494). [rodfersou]

  • Fix the indexing of RichText tiles by manually transform the text/html to text/plain. [puittenbroek]

  • Don’t ignore dropped objects on carousel tiles if the image is added to the object using a Dexterity behavior (fixes #473). [fredvd]

  • Fix to check if custom attributes were changed from default value (closes #476). [rodfersou]

  • Allow new empty carousel tiles to be edited in compose mode (fixes #472). [fredvd]

  • Add warning in the developer docs that switching the default grid system also means you should pay extra attention to the preset/saved cover layouts as these can contain invalid grid sizes. [fredvd]

  • Add upgrade step for reverting tiles already migrated to PersistentMapping in 1.0a10 [frapell]

  • Extend upgrade step to update the structure of all tiles inheriting from the list tile (fixes #466). Fix upgrade step to use a dict instead of a PersistentMapping. [hvelarde]

  • Fix to show dates for results in collection tile (fixes #463). [kcleong]

  • Allow to choose a custom title and description on items in a carousel tile (closes #459). [rodfersou]

  • Stop collective.cover breaking Products.TinyMCE’s hyperlink upload button (closes #450). [djowett]

1.0a10 (2014-10-31)

  • Allow to set a custom URL on elements for a Carousel (fixes #377). [frapell]

  • If an Image content is included, redirect to view and not the image itself [frapell]

  • Modifying annotations, while iterating through them, caused their size to be reduced and the loop to end early, leaving annotations in the object. [cguardia]

  • Add an option to extend JS configuration to reload tile in custom tiles (outside of collective.cover). [rodfersou]

  • Include a behavior to add a couple of fields that enable reloading the current page after a certain amount of time. Typical use case is a news portal that wants to keep the front page updated and increase the number of page views. [hvelarde]

  • Fix modification time disappearing from context data and handling missing value (fixes #449). [mhora]

  • Show event’s start date (instead of publication date) for Event-like objects in Basic, Collection and List tiles. [hvelarde]

  • Remove PloneFormGen’s ‘Form Folder’ from default searchable types (fixes #438). [djowett]

  • Fix AttributeError caused by editing a basic tile and not populating the image field. [enfold-josh]

  • Fix RemoveItemFromListTile helper browser view to avoid failure to remove an object when the tile is not a List Tile but a subclass of it. [hvelarde]

  • Fix UpdateTileContent helper browser view to avoid returning the rendering of previous object in tile on AJAX calls. [hvelarde]

1.0a9 (2014-06-27)

  • Add Traditional Chinese translation. [l34marr]

  • Basic tile implementation was not copying images from objects when the tile was populated. This was causing an error when an image was removed from the original object (fixes #426). [vangheem]

  • Unpublished content was disappearing from the list tile after access from anonymous user (fixes #412). [adriana-rv, hvelarde]

  • Allow Site Administrator role to manage Cover control panel (closes #423) [ericof]

  • Fix showing original size of images in banner and carousel tile. [maurits]

  • Improve python:view.is_compose_mode() tests in tile Zope Page Templates. This test would return False when content in for example list tiles is reordered deleted, or dropped on from the content chooser. (fixes #421). [fredvd]

  • Content body tile markup was changed to handle different conditions (empty tile or not) in a saner way; a text indicating when the body text of an item is empty was also added. [hvelarde]

  • Added link in content body tile to related item (fixes #415) [kcleong]

  • Update jss.js to 0.6 and include minified version. This fixes the layout page rendering and column resizing on IE10+ which was broken. Jss.js creates on the fly css from javascript. (fixes #398). [fredvd]

  • SearchableText indexer for RichText tiles was fixed (closes #411). [hvelarde]

  • List tile is again fully sortable; a change on the JS code used there was reverted (fixes #413). [hvelarde]

1.0a8.post1 (2014-04-27)

  • Disable SearchableText indexer for RichText tiles as it was causing UnicodeDecodeError (refs. #411). [hvelarde]

1.0a8 (2014-04-25)

  • Fix for collection tile not showing header correctly (fixes #407). [kcleong]

  • Add RichText tiles to the SearchableText index of the cover. [thepjot]

  • Re-enable item sorting on the carousel tile edit form. It was by accident disabled by removing the field on the list tile schema from which the carousel tile inherits. [fredvd]

  • Use jQuery’s .on instead of deprecated .live method. This allows compatibility with jQuery 1.9+. [naro]

  • Fix carousel tile so it does not break cover when dropping content with no image field (tile template was refactored and CSS class galleria-inner was removed). As a side effect the carousel tile is now fully responsive and you can select the image size that better fits the maximum desired size. An upgrade step to cook the CSS resources is provided (fixes #371). [hvelarde]

  • Handle missing tiles so they do not bork rendering and users are able to remove defunk ones. [vangheem]

  • Fixed 5-> 6 upgrade when collective.js.bootrap was already installed. [thomasdesvenain]

  • Make base tile inherit from plone.supermodel.model.Schema and fix other inconsistencies on tiles derivation (fixes #381). [jpgimenez]

  • Fix for generic title for list tiles introduced in 1.0a7 (fixes #393). [fredvd]

1.0a7 (2014-02-04)

  • Add title and show more to the list tile to have a consistent look-and-feel with the collection tile. [maurits]

  • Fix searching in content chooser on Japanese (fixes #374). [terapyon]

  • Fix Galleria warning on empty carousel tiles. [warpr]

  • Fix dropping Dexterity images on banner tile. [maurits, warpr]

  • Latest items are now properly loaded on content chooser when selecting the more link (fixes #383). [marcosfromero]

  • Use plone.api where possible. [hvelarde]

  • Japanese translation added. [terapyon]

  • Fix crash on view/compose/layout tabs when viewing a cover with an empty layout. [warpr].

  • Fix two javascript issues reported by the JSHint commit hook. [warpr]

  • Fix an issue which prevented Firefox users from making selections on the tile configuration dialogs. [warpr]

  • Gets the carousel test working again. (closes #333). [href]

  • Hides empty tile message in all views but the compose view (closes #348). [href]

  • Show the type of a tile (Basic Tile, Collection Tile, etc.) in the top center of the tile on the compose tab. This makes it easier for the user to know how they can add content, especially if the user does not have permission to view the layout tab. [warpr]

  • Make the grid system flexible. The default is still a 16 column Deco grid. You can register your own system as an IGridSystem utility based on the Deco16Grid class with a different name and select it in the configuration panel. You should create a grid that matches the css of the theme that you are using on your site. [warpr, maurits]

  • The reordering of list items is now immediately reflected in the DOM (closes #351). [href]

1.0a6 (2013-11-12)

  • Field order can now be set on tile configuration screen using drag-and-drop. (closes #248). [marcosfromero, cleberjsantos]

  • CSS improvements for list tile and content chooser. [agnogueira]

  • List tile is now configurable: you can set ordering and visibility for all fields and you can also set the preferred style for the title and the scale and alignment for the image thumbnail; the date of the items was also added (fixes #339). [hvelarde]

  • Fix image positioning on collection tile (fixes #318). [hvelarde]

  • Fix image positioning on basic tile (fixes #317). [agnogueira]

  • Let the icons sidebar fixed on top when scrolling the page (closes #342). [agnogueira]

  • Add short_name to all tiles. Use this as title in the tile list. This can be translated. [maurits]

  • Fix possible problem getting the css_class when the default configuration is used. The code tried to treat this as a dictionary instead of a simple string. [maurits]

  • Add offset as a configuration option to the collection tile. (fixes #298). [warpr]

  • Add cover-(type)-tile class to all tile templates (fixes #189). [warpr]

  • Support text from Dexterity items for the bodycontent and richtext tiles (fixes #323). [maurits]

  • Leaving layout editing tab after making changes now shows a confirmation dialog (fixes #314). [rristow]

  • Show a link to the related collection on compose view of the collection tile (closes #260). [agnogueira, hvelarde]

  • Increase test coverage. [tcurvelo]

  • Remove bundles from portal_javascript (closes #303). [jpgimenez]

  • Add German translation. [polyester, pbauer, svx]

  • Remove upgrade steps from unsupported versions (closes #295). [fulv]

  • Depend on collective.js.bootstrap (closes #201). [tcurvelo]

  • Remove code from Image and Link tiles (closes #301). [fulv]

  • Catalan translation added. [lpmayos]

1.0a5 (2013-10-02)

  • Added Norwegian translation. [espenmn]

  • Install IRelatedItems behavior to avoid ‘ReferenceException: Invalid target UID’ (fixes #294). [hvelarde]

  • Implement link integrity on Rich Text tile references (closes #35). [jpgimenez]

  • Register new alternate view for covers; the new view behaves like a standard content type view displaying object’s title, description and viewlets on Plone’s main_template main slot (closes #271). [hvelarde]

  • Fixes content-search in content chooser to correctly get the first page of results (closes #276). [marcosfromero]

  • Added any content type support for banner tile. If it has an image or getImage attribute, displays that image. And always adds a link (closes #241). [marcosfromero]

  • Prevent unnecessary page reloads when saving or canceling edit overlay in tiles (closes #274). [marcosfromero]

  • On collection tile, return a thumbnail only if the item has an image field and the field is visible (closes #278). [cleberjsantos, hvelarde]

  • Added Cover as Linkable in TinyMCE settings (closes #259). [marcosfromero]

  • Default CSS class for tiles (closes #262). [marcosfromero]

  • When adding a tile, display configuration icon only for configurable tiles (closes #204). [marcosfromero]

  • Auto add a column when adding a row (closes #212). [marcosfromero]

  • Remove dependency on plone.batching to avoid IndexError: multiple_pages on Plone 4.2. [jpgimenez]

  • Move CSS to registry_css (closes #244). [agnogueira]

  • Collection tile now fulfills the configured image size (fixes #239). [cleberjsantos]

  • Friendly layout for tile configuration (closes #133). [agnogueira]

1.0a4 (2013-07-27)

  • Add Finnish translation. [datakurre]

  • Add Italian translation. [gborelli]

  • Package documentation was updated. [hvelarde]

  • ‘buttons.cancel’ in prepOverlay closeselector has to be in quotes to avoid unrecognized expression javascript errors [ericof]

  • Refactor collection tile to include header and footer fields and fix tile’s i18n. (closes #118) [hvelarde]

  • Add simple Chinese translations (zh_CN). [Adam tang]

  • Add banner tile that will replace image and link tiles; add deprecation warning to image and link tiles as they will be removed from package on next release; an upgrade step is provided for unregistering them to avoid further addition on covers. (closes #218). [hvelarde]

  • Make carousel tile configurable and avoid NoneType error by checking if carousel is empty (fixes #203). [hvelarde]

  • Refactor image tile to use original image and scales, when possible. [ericof, hvelarde]

  • Add border to carousel tile dot. (closes #206). [hvelarde]

  • Upgrade to 1.1 [ericof]

  • Refactor EnabledTilesVocabulary to avoid issues with situations in which we have no context/request (HT datakurre). [hvelarde]

  • Spanish and Brazilian Portuguese translations were updated. [hvelarde]

  • [bugfix] Prevent the configuration view to crash if the widget does not provide an ‘accesskey’. [frapell]

  • Allow editor to add custom class for each tile (closes #190). [jpgimenez]

  • Refactor vocabularies and avoid ComponentLookupError when tile is not available. [hvelarde]

  • Add ‘alt’ attribute to images in list tile. [ericof]

  • Fix image scaling view. [ericof]

  • Avoid ComponentLookupError by improved handling of Unauthorized access of non-published or deleted objects referenced in the tiles. [ericof]

  • Fix translation of Compose and Layout that must be in plone domain. [toutpt]

  • Add French translation. [toutpt]

1.0a3 (2013-05-03)

  • Better support for internal and external images (closes #188). [jpgimenez]

  • Gallery tile now allows sorting of items easily through a widget created for that purpose (closes #198). [Quimera]

  • A custom permission for the export layout functionality was added; exporting a cover layout to the Plone registry is now an administrative task accomplished only by Managers and Site Administrators (closes #177). [Quimera]

  • Fix a bug in collection tile when the target collection was removed (closes #138). [jpgimenez]

  • Improve interface and performance of content chooser (closes #168 and #169). [jpgimenez]

  • Add upgrade step to rename resources in CSS and JS registries (fixes #171). [hvelarde]

  • An option in the control panel configlet was added in order to select the tiles that will be available for cover layout creation; an upgrade step is provided to update the registry with the new record (closes #191). [hvelarde]

  • Tile selection functionality in layout edit view was refactored to an explicit D&D UI (closes #183). [Quimera]

  • Apply default configuration to tiles at initialization (closes #100). [hvelarde]

  • Store basic tile data in unicode format to avoid UnicodeDecodeError (closes #144). [hvelarde]

  • A new special widgect for the cover creation and layout selection was added; the widget draws a preview of the layout in real time using an HTML5 canvas element (closes #179). [Quimera]

  • Show title of object as alt attribute in image of basic tile. [hvelarde]

  • Ensure tile UUID does not start with a number (fixes #137). [hvelarde]

  • Implements an original size scale to show the original image. [jpgimenez]

  • Improve the way that images are accessed from the original object, using the standard images traversal. (issue #158) [jpgimenez]

  • Fixed a bug with Plone 4.3 that avoided TinyMCE being displayed for RichText. (closes #157). [ericof]

1.0a2 (2013-04-09)

  • Move Galleria’s stylesheet and JS init to <head>. [davilima6]

  • New tile: PloneFormGen embedded form. [ericof]

  • New tile: Content Body. [ericof]

  • Update package documentation. [hvelarde, jpgimenez]

  • Package is now compatible with Plone 4.3. [ericof, jpgimenez, hvelarde]

  • Remove dependency on plone.principalsource (closes #152). [ericof]

  • Support five.grok 1.3.2 and 2.0.x. [ericof]

  • Update JQuery UI to version (fixes #124). [hvelarde]

  • Fix TinyMCE table conflict (closes #142). [agnogueira]

  • News Items can now be added to the carousel tile (fixes #146). [jpgimenez]

  • Basic tile date field visibility is now configurable. [jpgimenez]

  • Refactor carousel tile to use collective.js.galleria (closes #123). [jpgimenez]

  • Refactor list tile to use adapters to get the contained items uids. [jpgimenez]

  • Implements a way to omit fields from tiles edit form and show it at configure form. [jpgimenez]

  • Refactor of collection tile. [hvelarde]

  • List and carousel tiles now support loading images from folderish content. [jpgimenez]

  • Have the <base> tag to include a slash at the end so relative ajax calls are called for the object and not its parent (fixes #48). [frapell]

  • In order to be able to load Dexterity items from the import content GS step, we need to provide this interface manually, until a proper fix in Dexterity is implemented. [frapell]

  • Make the cover object to be an Item instead of a Container (fixes #114). [frapell]

  • Date and subjects fields on basic tile are now Read Only (fixes #129). [jpgimenez]

  • Fix row height in layout view (closes #128). [Quimera]

  • Fix filter feature on content chooser (closes #121). [Quimera]

1.0a1 (2013-01-07)

  • Initial release.

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 (717.7 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page