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.


This package provides an uninstall Generic Setup profile, however, it will not uninstall the package dependencies. Make sure to uninstall the dependencies if you no longer use them.

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 schemaextender field, so it’s also possible to categorize your own or any other content. There’s also a behavior (ftw.contentpage.behaviors.content_categories.IContentCategories), which extends your DX content by the same functionality.

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)

** Captcha ** The feedback view is protected from unauthorized users by a captcha from ReCaptcha. To enable it you have to configure your ReCaptcha public and private keys through the @@recaptcha-settings view on the site root.

ftw.lawgiver support

ftw.contentpage supports ftw.lawgiver



Runs with Plone 4.1, 4.2 or 4.3.


1.16.4 (2018-01-22)

  • Sort the images in the gallery view of the listing block by the sorting options defined on the block. [mbaechtold]

1.16.3 (2017-10-10)

  • Update newslisting rss view to rss version 2.0 [raphael-s]

1.16.2 (2017-06-23)

  • Rewrite tests using “ftw.testbrowser”, drop dependency on “ftw.testing[splinter]”. [mbaechtold]

1.16.1 (2017-06-21)

  • Fix event creator adapter introduced in 1.16.0. [mbaechtold]

  • Make news portlet more robust. [mbaechtold]

1.16.0 (2017-01-30)

  • Implement ftw.calendar EventCreator for EventPage. [lknoepfel]

1.15.0 (2017-01-04)

  • Add option to override the title of the news archive portlets. [mbaechtold]

1.14.0 (2016-12-13)

  • Drop support for Plone 4.1. [mbaechtold]

  • Add option to override the title of the event archive portlets. [mbaechtold]

1.13.0 (2016-07-04)

  • Rename several views and portletnames in favor of [mathias.leimgruber]

1.12.0 (2016-03-30)

  • Add option to news portlet which will force the news portlet listing view to also show expired news items. [mbaechtold]

  • Do not show map on addressblock if no address is given. [elioschmutz]

1.11.7 (2015-12-23)

  • Respect colorbox image_size property for images opened in overlay. This also solves caching issues (new image url). [mathias.leimgruber]

  • Restrict versions of some dependencies so they don’t pull in Plone 5. [mbaechtold]

  • Fix both news and news archive portlet context to display all news. [lknoepfel]

1.11.6 (2015-09-02)

  • Use current time instead of midnight for News effectivedate default. [tschanzt]

1.11.5 (2015-06-18)

  • Revert the linking of the image title of a textblock accidentally introduced in 1.11.0. [mbaechtold]

  • Fix NewsPortlet creation - always_render_portlet was missing. [mathias.leimgruber]

  • Fix title of newslisting if newslisting is used on a NewsFolder. [mathias.leimgruber]

  • Enable the selection of anchors from all the blocks of a content page in the WYSIWYG editor (TinyMCE). [mbaechtold, jone]

1.11.4 (2015-05-12)

  • Fix position of external link icon when linking textblock titles with the teaser feature. [mbaechtold]

1.11.3 (2015-04-14)

  • Fixed bug where textblock title linked to image instead of teaser location. [lknoepfel]

1.11.2 (2015-03-16)

  • Fix a bug in the textblock view when subclassed textblock types have no teaser block schema. [jone]

  • Fixed a bug which prevented the successful rendering of the textblock when the image’s alt text was based on a unicode string filename (“decoding Unicode is not supported”). [mbaechtold]

1.11.1 (2015-03-12)

  • Add German translations for custom lawgiver action groups. [jone]

1.11.0 (2015-03-11)

  • Lawgiver: ignore dexterity add keyword permission. [jone]

  • Added teaser option to textblock. [lknoepfel]

1.10.1 (2015-03-06)

  • Fix news rss date format test. [mathias.leimgruber]

  • Fix encoding error in filename of textblock image when rendering. [jone]

1.10.0 (2015-02-24)

  • Extend IContentCategories behavior with a new field “new content categories”. [mathias.leimgruber]

  • Don’t limit the number of news entries when rendering all news. [mbaechtold]

  • Render the news item’s publication date on the RSS feed. [mbaechtold]

  • Fixed a bug which prevented whole day events from being listed on the event listing view. [mbaechtold]

  • Fix cache decorator (from view to instance) for archive base portlet. If you have both archive portlets (news and event) on the same page the second archive portlet will use the result from the first one. [mathias.leimgruber]

  • Upgrade news portlets: add always_render_portlet default value to assignments. [jone]

  • Render the title of the portlet on the news listing view and hide the generic description. [mbaechtold]

  • Add a special class to the news portlet list item if there are no news. [mbaechtold]

  • Accessiblity improvements. [Kevin Bieri]

1.9.0 (2015-01-09)

  • Add caption to listingblock. Summary on table is no longer valid for accessiblity. [Kevin Bieri]

  • A new config option can be used to always render the news portlet, even if there are no news entries available. [mbaechtold]

  • Bugfix: render the news on the newslisting view when the news portlet is inherited from an ancestor. [mbaechtold]

  • Fixed a bug during the rendering of the captcha on the feedback form. [mbaechtold]

  • Remove empty paragraph tags from address block. [mbaechtold]

1.8.6 (2014-12-11)

  • Fix dowload url generation, do not pass unicode in attrs for ftw.table table generator, it needs utf-8 for all attrs. [mathias.leimgruber]

  • Added captcha to feedback form. [lknoepfel]

1.8.5 (2014-12-04)

  • Changed styling for colorbox. Title and description on one line. [Bieri Kevin]

1.8.4 (2014-12-02)

  • Add content_categories behavior. [mathias.leimgruber]

1.8.3 (2014-11-20)

  • Display a message if there a no recent news available in the news portlet. [mbaechtold]

1.8.2 (2014-11-18)

  • Display the user defined title of the news portlet instance in the “manage portlets” screen. [mbaechtold]

  • Fixes and improvements of the markup. [kbieri]

1.8.1 (2014-10-20)

  • The generated link of a file in the listing block is configurable. [mbaechtold]

1.8.0 (2014-09-26)

  • Added special newslisting view to consider the portlets config. [Julian Infanger, jone]

  • Fix month filter for eventslisting. [mathias.leimgruber]

  • Addressblock: Activate WYSIWYG-Editor on directions and opening hours. [lknoepfel]

  • Use ftw.profilehook instead of custom import steps (setuphandlers). [jone]

  • Addressblock: Return an empty string if defaulttitle is none. [Julian Infanger]

  • Feedback form: Replace comma in sender name. To avoid conflicts with reply-to address. [Julian Infanger]

1.7.2 (2014-07-28)

  • Show title and description in listingblock colorbox. [Julian Infanger]

1.7.1 (2014-07-16)

  • Removed nonsense condition in event listing. [Julian Infanger]

  • Added css classes to eventlisting table. [Julian Infanger]

1.7.0 (2014-07-08)

  • Don’t allow file upload on text field. [tschanzt]

  • Fix eventlisting. Shows events based on the end date instead the start date [elioschmutz]

1.6.8 (2014-06-13)

  • Added icon for faq layout. [Julian Infanger]

  • Add new Layout to make a Textblock an FAQ-Block. [tschanzt]

  • Add missing translations for event_listing. [tschanzt]

1.6.7 (2014-06-11)

  • Textblock simplelayout view: support text blocks without image. [jone]

1.6.6 (2014-06-11)

  • Fixed styling of listingblock gallery view. [Julian Infanger]

  • Register event_listing view for IEventFolder only. Prevent conflicts with other packages. [mathias.leimgruber]

  • Baselisting: Add parameter for width and height to get_img function to make customization easier. [Julian Infanger]

  • Implement uninstall profile. [deif]

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]

  • 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]

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

ftw.contentpage-1.16.4.tar.gz (131.4 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