如何获得';种类';来自它的portlet(组/上下文/类型)';Plone中的s渲染器

如何获得';种类';来自它的portlet(组/上下文/类型)';Plone中的s渲染器,plone,Plone,背景: 我想构建一个URL来遍历当前portlet,以提供呈现特定数据的外部视图 实际用例: 我正在做一个视频播放器,它等待一个URL作为参数来获取视频标题。标题存储在schema.Text字段中。因此,目标是创建一个视图来显示这些数据;比如: /++contextportlets++plone.rightcolumn/test-video/@@video_captions 所以我在python代码渲染器中,我想从中构建URL。(self是渲染器)我需要: 上下文、类型、组中的portl

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

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

  /++contextportlets++plone.rightcolumn/test-video/@@video_captions
所以我在python代码渲染器中,我想从中构建URL。(self是渲染器)我需要:

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

因此,问题是如何从它的呈现器中获取portlet的类型。

portlet类别只能从portlet检索器中获得。您可以通过在检索器的
getPortlets
方法上循环来查找它。由于方法返回的信息处理分配,您需要portlet分配(
.data
在渲染器上),以选择正确的条目:

从zope.component导入getMultiAdapter
从plone.portlets.interfaces导入IPortletRetriever
#这假设您将portlet上下文和管理器作为self的属性,
#与渲染器中类似:
retriever=getMultiAdapter((self.context,self.manager),IPortletRetriever)
有关retriever.getPortlet()中的信息:
如果信息['assignment']为自身数据:
退货信息['category']

portlet类别仅可从portlet检索器获得。您可以通过在检索器的
getPortlets
方法上循环来查找它。由于方法返回的信息处理分配,您需要portlet分配(
.data
在渲染器上),以选择正确的条目:

从zope.component导入getMultiAdapter
从plone.portlets.interfaces导入IPortletRetriever
#这假设您将portlet上下文和管理器作为self的属性,
#与渲染器中类似:
retriever=getMultiAdapter((self.context,self.manager),IPortletRetriever)
有关retriever.getPortlet()中的信息:
如果信息['assignment']为自身数据:
退货信息['category']

感谢它与一些调整(输入和上下文路径的需要)一起工作。感谢它与一些调整(输入和上下文路径的需要)一起工作。