Отключение типов портлетов для всего сайта в Plone - PullRequest
7 голосов
/ 05 мая 2011

Как лучше всего отключить типы портлетов в Plone 4.1 для всего сайта?Настройка по умолчанию дает ~ 10 типов портлетов, но пользователи сайта могут использовать только несколько (статический текст, новости).

1 Ответ

7 голосов
/ 05 мая 2011

Портлеты регистрируются как утилиты с интерфейсом 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>

Спасибо Дэвиду Глику за поиск этогодля нас.

...