Skip to main content

Contentpage based on Simplelayout for for web/intranet

Project description


ftw.contentpage provides some content types optimized for organisations, communities, associations, and more.

It uses simplelayout to manage and display the content.


  • Add ftw.contentpage to your buildout configuration:
eggs +=
  • Install the generic import profile.

Important upgrade notes

If you upgrade ftw.contentpage to 1.6 or greater. The IOrgUnitMarker interface does not longer exists. The marker Interfaces is replaced with the IAuthority interface. Also the behaviour changed how the marker interface is applied to the ContentPage: OLD: By adding or removing an AddressBlock NEW: By manually ticking the “Mark content for listings” checkbox on the ContentPage. Run the ftw.contentpage upgrades steps and your site will be fine.



  • ContentPage: Folderish type for the site structure. Contains the blocks
  • AddressBlock: AddressBlock contains address informations and it uses ftw.geo to render a map
  • ListingBlock: A folderish block, which lists files and images by default. Two block views are provided: Tabular listing and a gallery view. The columns of the file listing are configurable per block. The default set of columns is configured through the the registry ( The default sort order of the Listingblock file listing can be configured per block.
  • EventPage / EventFolder: A simple and minimal event implementation based on a ContentPage.
  • News / NewsFolder: A simple news implementation based on a ContentPage.

Special views:

There’s a two-column and two-level overview named authorities_view, which displays a list of ContentPages with with the IAuthority interface. The IAuthority interface ist added and removed by ticking a checkbox called “Mark content for listings” on the ContentPage. This allows to decide if a ContentPage is displayed on the authorities_view manually. The checkbox is implemented with archetypes.schemaextender, which allows to extend other content types:

Code example:

<class class="">
  <implements interface="ftw.contentpage.interfaces.IAuthoritySupport" />

The Checkbox is protected with the permission: ftw.contentpage: Toggle IAuthority marker interface.

The EventFolder has a simple events listing, which shows the next 10 upcoming events (batching included).

The NewsFolder has a simple news listing, which shows the 10 most recent news entries (batching included).

ContentListing viewlet:

The content listing viewlet is registered for all ContentPages. It shows categorized subcontent, within the ContentPage The categorization is done by a schemaextended field, so it’s also possible to categorize your own or any other content.

Code example:

<class class="">
  <implements interface="ftw.contentpage.interfaces.ICategorizable" />

** Teaser Image ** All content pages, event pages and news are able to display a teaser image, which is stored on the content itself. It behaves like a regular block and shows also the description. The teaser image related fields have their own write permission, one per content type. Take a look at the rolemap.xml for details.

** Portlet ** It’s possible to enable an archive portlet for News and EventPages. It only works if the current view is the news or event listing view. The portlet is not created by default.

ftw.contentpage is using the additional slot provided by simplelayout (implements the IAdditionalListingEnabled interface of simplelayout)

So the layout has the following structure:

  1. Simplelayout main slot for blocks
  2. The content listing viewlet
  3. The additional slot for blocks

This way it’s possible to display content below the content listing viewlet (by drag’n’drop)

ftw.lawgiver support

ftw.contentpage supports ftw.lawgiver



Runs with Plone 4.1, 4.2 or 4.3.


1.6.5 (2014-04-17)

  • Move eventdata table below the description. [Julian Infanger]

1.6.4 (2014-04-16)

  • BugFix: Encode sender name with utf-8, so it will encoded anyway. [tschanzt]

1.6.3 (2014-03-27)

  • Translate News content type title. [deif]

1.6.2 (2014-03-26)

  • Enable openlayer resources on IContentPage if an AddressBlock is available. Marking the ContentPage as IAuthorty is no longer necessary. [mathias.leimgruber]
  • Add upgradestep for collapse_archive.js registration [elioschmutz]
  • Fix mutable bug in finalize schema function. [jone]
  • EventPage: Updated event data table markup. [Julian Infanger]

1.6.1 (2014-03-10)

  • Added possibility to create an event with a start time, but no end time. If you set the start and end at the same date and time, the output will be “01.01.2014 08:00” instead of “01.01.2014 08:00 - 08:00”. [Julian Infanger]
  • Move anchor above title so the title is visible when the anchor is used. [tschanzt]
  • Make the news portlet available for News context. [deif]

1.6.0 (2014-02-03)

  • Add rss checkbox to news portlet (Shows RSS link on portlet). [mathias.leimgruber]
  • Add missing translations for event_listing. [tschanzt]
  • Replace IOrgUnitMarker interface with IAuthority interface. The behaviour, how then interface is applied to the ContentPage also changed. New: Tick the “Mark content for listings” checkbox on the ContentPage. The marker interface is no longer applied by adding an AddressBlock (Check Readme).
  • Use Input of Location field if given. [tschanzt]
  • Add EventPage to calendar_types. [tschanzt]

1.5.7 (2013-12-19)

  • Make reladedItems field visible for ContentPage. [deif]

1.5.6 (2013-12-17)

  • Fix possible UnicodeDecodeError in news_rss_listing. [mathias.leimgruber]

1.5.5 (2013-12-17)

  • The manual ftw.contenpage pot file was not included in the last release. Rebulded the de po file with ftw.contenpage-manual.pot

1.5.4 (2013-12-13)

  • Add specific snippetText indexer for content pages which is used in combination with ftw.solr. [buchi]
  • Fix RSS listing. [tschanzt]
  • Show inactive content in news and event listings if the user has permission to access inactive contents on the local context. [buchi]

1.5.3 (2013-11-12)

  • Implement subject_filter for subject_listing view. It’s possible to add a request filter (?subject_filter=Law) if you wish to display just objects with the filtered subject. The filtered subject itself will not be displayed in the listing. [elioschmutz]

1.5.2 (2013-11-04)

  • Remove browserlayer from browserviews, they are not necessary. [mathias.leimgruber]
  • Fix several not translated simplelayout actions. [mathias.leimgruber]

1.5.1 (2013-10-07)

  • Add French translations [elioschmutz]

1.5 (2013-09-26)

  • Fix bug in addressblock-maps if diazo is activated. Each map has it’s own id, generated with the id of the addressblock. Diazo uses the same id for anchor links. The openlayers js is searching for the map id and finds the link instead the map and breaks in a ‘TypeError: Cannot read property ‘w’ of null’ error.’ The fix adds a prefix to the map-id to be sure, we don’t get duplicated ids on a page. [elioschmutz]
  • Hide teaser viewlet for non-simplelayout views. [jone]
  • Add document date to listing block if ftw.file is installed. [jone]
  • Fix extend_query_by_date function if ‘datestring’ contains a bad date-format. The function is to extend a query (dict) with a daterange and returns the new query. If the function can’t convert the datestring to a datetime object, it returns None and the given query is lost. Now the function returns the untouched query. [elio.schmutz]
  • Fix TypeError in news rss listing. [jone]
  • Remove ISimpleLayoutCapable from news folder. News folder is not really a simplelayout container. [jone]
  • Subject listing: fix “#” letter. [jone]

1.4 (2013-09-02)

  • Adjust openlayersimplementation for addressblocks to be able to add multiple addressblocks on one page with correct map-rendering [elioschmutz]
  • Add browserlayer. [mathias.leimgruber]
  • Remove upload.js [mathias.leimgruber]
  • Add view to check if multiupload is possible. [mathias.leimgruber]
  • Do not use jq in collaps_archive.js. [mathias.leimgruber]
  • Add multiupload view for Listingblocks based on c.quickupload. [mathias.leimgruber]
  • Add mimetype icon to subject-listing [elioschmutz]
  • Fix subjects-vocabulary if we get unique values in case sensitive [elioschmutz]
  • Implement collapsible archive portlet [elioschmutz]
  • Implement alphabetical subject listing as @@subject-listing. [jone]
  • Added view for contentpage to display the blocks as tabs. [Julian Infanger]
  • Updated translations for url field in addressblock. [Julian Infanger]
  • Change queries for archive and news portlets from portal_type to provided interfaces [eschmutz]
  • Change inser-after to insert-after in viewlets.xml [elioschmutz]
  • Newsfolders query is now looking for the INews interface insted of the News portal_type [eschmutz]
  • Add department field to addressblock. [treinhard]
  • Enable categorization for PFG forms. [treinhard]
  • Disable EventListing if is installed [href]

1.3 (2013-06-13)

  • Remove extraAdressLine from geo query. [mathias.leimgruber]
  • Add ID as column to listingblock. [jone]
  • Add review state as column to listingblock. [Julian Infanger]
  • Added simplelayout summary view to display more details in contentlisting. [Julian Infanger]
  • Register the IOrgUnitMarker interface so that it is avaiable in manage_interfaces. [jone]
  • Suggest the parents title for addresstitle in addressblock. Its the better way than just display it if no addresstitle is set. [Julian Infanger]

1.2.1 (2013-06-03)

  • Do not copy parent layout. [mathias.leimgruber]
  • Fix off-by-one error in listingblock. This caused that the listingblock was not displayed when only one item was in the listingblock and the block was not editable. [jone]

1.2 (2013-05-27)

  • Fix in news portlet. Use getObject instead of restictedTraverse(path). [mathias.leimgruber]
  • Do not show description field of textblock. [mathias.leimgruber]
  • Use summary attribute in table instead of title. [Julian Infanger]
  • Do not show the author in newslisting for anonymous user, if the property allowAnonymousViewAbout is not true. [Julian Infanger]
  • Hide empty listing blocks for anonymous. [jone]
  • Sort content categories alphabetical. [mathias.leimgruber]
  • Fix content_categories index. Should be available on ICategorizable not on IContentPage
  • Add ListingBlock and AddressBlock to addable types of News. [mathias.leimgruber]
  • Added helper javascript for start and end date widget. [Julian Infanger]
  • Fix news result quantity. [mathias.leimgruber]
  • Add a configurable “Show more or show all News link” link into the footer of the news portlet. It only shows up if there are news to show and if the “Show all news” box is ticked. [mathias.leimgruber]
  • Search News and Events recursively. [mathias.leimgruber]
  • Change german transaltions. [mathias.leimgruber]
  • Fix content type on text fields of address block: use text/plain as input type. [jone]
  • News listing view: handle news without effective date. [jone]

1.1 (2013-04-29)

  • Fixed condition for addrestitel in address templates. [phgross]
  • Added publication date viewlet to news view. [Julian Infanger]
  • Add custom date formatter for events. [mathias.leimgruber]
  • Improve test coverage [mathias.leimgruber]
  • Make textblock title searchable. [Julian Infanger]
  • Do not assign any workflow to TextBlock, AddressBlock and ListingBlock Provide an upgrade step, which removes the currently assigned workflow. [mathias.leimgruber]
  • Fix AddressBlock FTI - Change (Default) alias to (dynamic view). [mathias.leimgruber]
  • Add more test for EventPage. [mathias.leimgruber]
  • Add teaser image functionality for contenpage. [mathias.leimgruber]
  • Browserviews should not be public. [Julian Infanger]
  • Updated German translations [phabegger]
  • Fill content-core slot instead of main slot and show edit-bar. [mathias.leimgruber]
  • Add Event type. [tschanzt]

1.0 (2013-04-10)

  • Init release [mathias.leimgruber]

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date (190.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page