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

发布于 2024-11-05 03:14:57 字数 96 浏览 1 评论 0原文

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

What's the best way to disable portlet types site-wide in Plone 4.1? The default setup gives ~10 portlet types, but the site users have use case only for few (static text, news).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那些过往 2024-11-12 03:14:57

Portlet 通过 zope 组件机制的 IPortletType 接口注册为实用程序。当使用 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 为我们找到了该属性。

Portlets are registered as utilities with the IPortletType interface with the zope component machinery. These registrations are generated for you when registering portlets with portlets.xml. The portlet management UI then uses these utility registrations to enumerate portlets you can add.

Luckily, plone.portlets.utils provides a handy API to unregister these portlets again:

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.
    """

The addview parameter is a string, and is the same as used in a portlet.xml registration. For example, the calendar portlet is registered as:

<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>

You can thus remove the calendar portlet from your site by running the following code snippet:

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

You can also just use the GenericSetup portlets.xml file to remove the portlets during setup time, just list the portlets addview parameter and add a remove attribute to the element:

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

Thanks to David Glick for finding that one for us.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文