gpt4 book ai didi

portlet - 在 Plone 中禁用站点范围内的 portlet 类型

转载 作者:行者123 更新时间:2023-12-02 06:04:49 25 4
gpt4 key购买 nike

在 Plone 4.1 中禁用站点范围内的 portlet 类型的最佳方法是什么?默认设置提供约 10 个 portlet 类型,但站点用户仅拥有少数几种用例(静态文本、新闻)。

最佳答案

Portlet 通过 zope 组件机制的 IPortletType 接口(interface)注册为实用程序。当使用 portlets.xml 注册 portlet 时,会为您生成这些注册。然后,Portlet 管理 UI 使用这些实用程序注册来枚举您可以添加的 Portlet。

幸运的是,plone.portlets.utils 提供了一个方便的 API 来再次取消注册这些 portlet:

def unregisterPortletType(site, addview):
"""Unregister a portlet type.

site is the local site where the registration was made. The addview
should is used to uniquely identify the portlet.
"""

addview 参数是一个字符串,与 portlet.xml 注册中使用的相同。例如,日历 portlet 注册为:

<portlet
addview="portlets.Calendar"
title="Calendar portlet"
description="A portlet which can render a calendar."
i18n:attributes="title;
description"
>
<for interface="plone.app.portlets.interfaces.IColumn" />
<for interface="plone.app.portlets.interfaces.IDashboard" />
</portlet>

因此,您可以通过运行以下代码片段从您的站点中删除日历 portlet:

from plone.portlets.utils import unregisterPortletType
unregisterPortletType(site, 'portlets.Calendar')

您还可以使用 GenericSetup portlets.xml 文件在设置期间删除 portlet,只需列出 portlet addview 参数并向元素添加 remove 属性即可:

<?xml version="1.0"?>
<portlets>
<portlet addview="portlets.Calendar" remove="true" />
</portlets>

感谢 David Glick 为我们找到了这个。

关于portlet - 在 Plone 中禁用站点范围内的 portlet 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897656/

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