2

我想知道是否有任何产品可以帮助我从“站点设置”中的可用插件列表中隐藏插件。让我解释一下为什么。

我的情况是托管多个客户在同一个 Zope 实例上运行的 Plone 站点,每个站点都使用不同的 Data.fs,并且我为每个客户定制制作了一些包,例如“客户 A 主题”、“客户B 主题”。现在,因为它们在同一个 Zope 实例上,客户 A 可以在其站点附加组件列表中看到“客户 B 主题”也可用,这是我试图避免的。

从附加组件列表中隐藏产品在其他一些情况下也很有用,例如,更熟练的客户可以安装 PloneFormGen,而普通客户则没有。

我不知道这样的产品是否存在,我愿意做一个,如果你们中的一些人能指出我正确的方向。

谢谢

4

2 回答 2

4

在你的 __ init__.py 放在某个地方

from zope.interface import implements
from Products.CMFQuickInstallerTool.interfaces import INonInstallable

class HiddenProfiles(object):
    """This hides zope2 profiles from the add-ons control panel/ 
    quick installer tool.
    """
    implements(INonInstallable)

    def getNonInstallableProducts(self):
        return ['DOTTED_PACKAGE_PATH']

然后在一个configure.zcml

  <utility
    factory=".HiddenProfiles"
    name="DOTTED_PACKAGE_PATH"
  /> 

并将 *DOTTED_PACKAGE_PATH* 替换为真实姓名,即collective.myfancypackage

重要提示:如果为一个 dottedpath 注册了多个配置文件,则按字母顺序排列的第一个显示为附加组件,而其他的则被隐藏。

不能排除单个配置文件,只能排除包的所有配置文件。作为一种解决方法,可以制作一个子包,即collective.myfancypackage.hiddenprofile/profiles/default,注册它并将添加配置文件所需的所有内容放入其中。然后排除虚线路径collective.myfancypackage.hiddenprofile,而位于collective.myfancypackage/profiles/default的主配置文件仍然可以作为插件安装。

于 2012-05-07T11:58:56.410 回答
2

是的,您可以从可用附加组件列表中隐藏软件包;我知道如何使用 Five.grok 来做到这一点,但也应该有直接的方法。

于 2012-05-05T15:23:19.400 回答