Skip to main content

Renders a content provider in a portlet

Project description

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.0

  • 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

collective.portlet.contentprovider-1.0.zip (12.7 kB view details)

Uploaded Source

File details

Details for the file collective.portlet.contentprovider-1.0.zip.

File metadata

File hashes

Hashes for collective.portlet.contentprovider-1.0.zip
Algorithm Hash digest
SHA256 2809fa7523006987c38623727fda05b496bdae018104f918669306755037d45c
MD5 fbc6a7af852d621c91b25a1540f24dab
BLAKE2b-256 4d09c205d73fe0fb1df01c459de1065dd687c3945cc483a277ec2034f9402e58

See more details on using hashes here.

Supported by

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