上下文: 我想构建一个URL来遍历当前的portlet,以提供呈现特定数据的外部视图。
真实用例: 我正在做一个等待URL作为参数来获取视频字幕的视频播放器。标题存储在schema.Text字段中。所以目标是创建一个显示这些数据的视图;类似的东西:
/++contextportlets++plone.rightcolumn/test-video/@@video_captions
所以我在python代码渲染器中,我想从中构建该URL。 (自我是渲染器)我需要:
所以问题是我如何从它的渲染器中获得这种portlet。
答案 0 :(得分:1)
portlet类别仅在portlet检索器中可用。您可以通过循环检索器的getPortlets
方法来查找它。由于方法返回的信息处理赋值,您需要在渲染器上进行portlet分配(.data
),以选择正确的条目:
from zope.component import getMultiAdapter
from plone.portlets.interfaces import IPortletRetriever
# This assumes you have the portlet context and manager as attributes of self,
# like in the renderer:
retriever = getMultiAdapter((self.context, self.manager), IPortletRetriever)
for info in retriever.getPortlets():
if info['assignment'] is self.data:
return info['category']