1

上下文:我想构建一个 URL 来遍历当前的 portlet,以提供呈现特定数据的外部视图。

真实用例:我正在做一个视频播放器,它等待 URL 作为参数来获取视频字幕。字幕存储在 schema.Text 字段中。所以目标是创建一个视图来显示这些数据;就像是:

  /++contextportlets++plone.rightcolumn/test-video/@@video_captions

所以我在 python 代码渲染器中,我想从中构建那个 URL。(自己是渲染器)我需要:

  • 上下文、类型、组中的 portlet 类型
  • 经理姓名(self.manager.name的工作)
  • portlet id(self.data.id 完成这项工作)

所以问题是我如何从它的渲染器中获得那种portlet。

4

1 回答 1

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']
于 2012-06-26T16:32:21.573 回答