Это зависит. Если у вас есть небольшое количество назначенных локальных портлетов, я предлагаю ручной способ. Если у вас есть сложное назначение локальных портлетов, вы можете воспользоваться следующим способом:
1 - создать вид браузера , связанный с корнем сайта
2 - добавить это:
from Products.Five import BrowserView
from Products.CMFCore.utils import getToolByName
from zope.component import getMultiAdapter
from plone.portlets.interfaces import IPortletManager
from plone.portlets.interfaces import IPortletAssignmentMapping
from plone.portlets.interfaces import ILocalPortletAssignable
class MyView(BrowserView):
def __call__(self):
ctool = getToolByName(self.context, 'portal_catalog')
all_brains = ctool.searchResults()
for i in all_brains:
obj = i.getObject()
if not ILocalPortletAssignable.providedBy(obj):
continue
for manager_name in ('plone.leftcolumn','plone.rightcolumn'):
manager = getUtility(IPortletManager, name=manager_name)
assignment_mapping = getMultiAdapter((obj, manager),
IPortletAssignmentMapping)
for i in assignment_mapping.keys():
del assignment_mapping['assignment_mapping']
Обычно извлечение всех объектов не очень хорошая вещь, поэтому вам следует тщательно оценить количество содержимого и локальных портлеров. Тем не менее, этот путь немного агрессивен, но он сделает свою работу.