在portlet中呈现内容提供者
collective.portlet.contentprovider的Python项目详细描述
简介
contentprovider允许您将内容提供者 将viewletmanagers放入portlet。这个工具是供有经验的人使用的 因为现实生活中的使用需要 在zcml和通用设置配置文件中重新连接viewlets和viewlet管理器。
安装是plone插件的典型做法。添加collective.portlet.ContentProvider 把你的蛋列在你的房子里。如果使用早期版本的plone, 把它加到zcml鼻塞里。
使用collective.portlet.contentprovider
使用一个真实的用例可能是最好的演示:添加一个产品。 幻灯片演示到Portlet。通常,carousel会添加其banner viewlet, products.carousel.viewlet,转到icontentviews viewletmanager。假设我们 相反,希望将其显示在collective.portlet.ContentProvider中 portlet。
viewlet不是用来作为直接内容提供者的(它们需要一个管理器)。 所以我们需要告诉contentprovider portlet显示viewletmanager 显示products.carousel.viewlet的。所以,我们可以添加一个contentprovider portlet并告诉它(在portlet编辑器的provider字段中)显示 扑通一声。内容视图。这行得通,但也会拖累其他处理的事情 通过plone.contentviews。
因此,要正确地完成这项工作,我们需要为移动的viewlet执行典型的viewlet舞蹈 从一个经理到另一个经理。我们还将利用collective.portlet.ContentProvider 注册在其他地方不使用的Viewlet管理器。所以,在我们的主题中 产品的configure.zcml, 我们需要做的就是设置经理来处理传送带
<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" />
并且,在viewlets.xml设置文件中,在旧管理器中隐藏carousel viewlet:
<hidden manager="plone.contentviews" skinname="plonetheme.ucdvaw"> <viewlet name="Products.Carousel.viewlet"/> </hidden>
最后,只需添加一个contentprovider portlet并告诉它显示collective.portlet.contentprovider_vmanager。
更改日志
1.1
- 修复初始版本中丢失的文件
1.0
- 初始版本