在Plone 4.1中在站点范围内禁用portlet类型的最佳方法是什么?默认设置提供~10个portlet类型,但站点用户只有少数用例(静态文本,新闻).
Portlet IPortletType通过与zope组件机制的接口注册为实用程序.在使用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.
"""
Run Code Online (Sandbox Code Playgroud)
该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>
Run Code Online (Sandbox Code Playgroud)
因此,您可以通过运行以下代码段从您的站点中删除日历portlet:
from plone.portlets.utils import unregisterPortletType
unregisterPortletType(site, 'portlets.Calendar')
Run Code Online (Sandbox Code Playgroud)
您还可以使用GenericSetup portlets.xml文件在设置时删除portlet,只需列出portlets addview参数并向remove元素添加属性:
<?xml version="1.0"?>
<portlets>
<portlet addview="portlets.Calendar" remove="true" />
</portlets>
Run Code Online (Sandbox Code Playgroud)
感谢David Glick为我们找到了那个.
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |