Skip to main content

Introduction

collective.portlet.contentprovider allows you to put content providers like viewletmanagers into portlets. This tool is meant for use by experienced theme developers since real-life use is going to require the ability to rewire viewlets and viewlet managers in ZCML and Generic Setup profiles.

Installation is typical for a Plone add on. Add collective.portlet.contentprovider to your eggs list in your buildout. If using an early version of plone, also add it to the zcml slugs.

Using collective.portlet.contentprovider

Use is probably best demonstrate with a real use case: adding a Products.Carousel slideshow to a portlet. Normally, Carousel adds its banner viewlet, Products.Carousel.viewlet, to the IContentViews viewletmanager. Let’s say we wish, instead, to display it in a collective.portlet.contentprovider portlet.

Viewlets aren’t meant for use as direct content providers (they need a manager), so we need to tell a contentprovider portlet to show a viewletmanager that displays Products.Carousel.viewlet. So, we could just add a contentprovider portlet and tell it (in the provider field in the portlet editor) to display plone.contentviews. This works, but it also drags in everything else handled by plone.contentviews.

So, to do this right, we need to do the typical viewlet dance for moving viewlets from one manager to another. We’ll also make use of the fact that collective.portlet.contentprovider registers a viewlet manager that isn’t used anywhere else. So, in our theme product’s configure.zcml, all we need to do is set that manager to handle the carousel

<browser:viewlet
    name="Products.Carousel.pviewlet"
    for="*"
    manager="collective.portlet.contentprovider.interfaces.IContentProviderPortlet"
    class="Products.Carousel.browser.viewlet.CarouselViewlet"
    permission="zope2.View"
    layer=".interfaces.IThemeSpecific"
/>

And, in our viewlets.xml setup file, hide the Carousel viewlet in the old manager:

<hidden manager="plone.contentviews" skinname="plonetheme.ucdvaw">
 <viewlet name="Products.Carousel.viewlet"/>
</hidden>

Finally, just add a contentprovider portlet and tell it to display collective.portlet.contentprovider_vmanager.

Changelog

1.1

  • Fix missing file in initial release

1.0

  • Initial release

Metadata

Release files for collective.portlet.contentprovider 1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for collective.portlet.contentprovider 1.1
File Size Uploaded
collective.portlet.contentprovider-1.1.zip 23.9 kB Details

Release files / collective.portlet.contentprovider-1.1.zip

Download URL collective.portlet.contentprovider-1.1.zip
Size 23.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9580efe35f9cea329041f607bf49e15fdbf914de8f9bf1618e5fdb2f06fb49c1
BLAKE2b-256 checksum
How to use checksums
b9fc51aba6a9feac451b2fd620b6be0bc2c456f9bd03861d6884be2cd86c0720
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1 This release

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page