gpt4 book ai didi

plone - 如何将库存 portlet(来自 plone.app.portlets)添加到我的自定义 portlet 管理器?

转载 作者:行者123 更新时间:2023-12-04 18:50:18 27 4
gpt4 key购买 nike

使用 documentation在 plone.org 和论坛中的一些网站上,我能够在 Plone 4.0.8 中的内容下方获得一个自定义 portlet 管理器。实际上,目标是让 4 个自定义管理器像仪表板一样排列在内容下方。

无论如何,我的经理只允许我添加静态和集合 portlet。在查看代码后,我发现当系统填充“添加新的 portlet”下拉列表时,它会循环遍历所有的 portlet。然后,它遍历每个portlet 的'for_' 属性,检查接口(interface)是否由self 提供—​​—我的portlet 管理器。

def getAddablePortletTypes(self):
addable = []
for p in getUtilitiesFor(IPortletType):
# BBB - first condition, because starting with Plone 3.1
#every p[1].for_ should be a list
if not isinstance(p[1].for_, list):
logger.warning("Deprecation Warning ..." % p[1].addview)
if p[1].for_ is None or p[1].for_.providedBy(self):
addable.append(p[1])
elif [i for i in p[1].for_ if i.providedBy(self)]:
addable.append(p[1])
return addable

如何将经理的接口(interface)添加到每个 portlet 的“for_”接口(interface)列表中?

最佳答案

您的 comment可能是最好的方法。这里的关键是 portlet 本身被注册到一个 portlet 管理器接口(interface),以及用于上下文、层等的其他接口(interface)。例如,另一种方法是在您的 profile/default/portlets.xml 中添加额外的注册将文件添加到您想要添加的每个 portlet 的 portlet 管理器界面:

<portlet
addview="portlets.News"
title="News"
description="A portlet which can render a listing of recent news"
i18n:attributes="title;
description"
>
<for interface="your.package.IYourPortletManager" />
</portlet>

然而,您的方式可能是最好的,因为听起来您正在创建一个列式 portlet 管理器。但是,您可以从基类中删除 IPortletManager,因为 IColumn 已经是它的子类。

关于plone - 如何将库存 portlet(来自 plone.app.portlets)添加到我的自定义 portlet 管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com