Портлеты регистрируются как утилиты с интерфейсом IPortletType
с механизмом компонентов zope.Эти регистрации создаются для вас при регистрации портлетов с помощью portlets.xml.Пользовательский интерфейс управления портлетами затем использует эти регистрационные утилиты для перечисления портлетов, которые можно добавить.
К счастью, plone.portlets.utils
предоставляет удобный API для повторной регистрации этих портлетов:
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
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>
Таким образом, вы можете удалить портлет календаря со своего сайта, выполнив следующий фрагмент кода:
from plone.portlets.utils import unregisterPortletType
unregisterPortletType(site, 'portlets.Calendar')
Вы также можете просто использоватьВ файле GenericSetup portlets.xml для удаления портлетов во время установки просто перечислите параметр addview
портлетов и добавьте атрибут remove
к элементу:
<?xml version="1.0"?>
<portlets>
<portlet addview="portlets.Calendar" remove="true" />
</portlets>
Спасибо Дэвиду Глику за поиск этогодля нас.