Plone:隐藏站点设置中的加载项

时间:2012-05-05 08:00:52

标签: plone

我想知道是否有任何产品可以帮助我从“网站设置”中的可用加载项列表中隐藏加载项。让我解释一下原因。

我正处于托管多个客户Plone网站在同一个Zope实例上运行的情况,每个网站都使用不同的Data.fs,我为每个客户定制做了一些包,比如“Customer A Theme” ,“客户B主题”。现在,因为它们位于同一个Zope实例上,所以客户A可以在其网站附加组件列表中看到“客户B主题”也可用,这正是我想要避免的。

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

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

谢谢

2 个答案:

答案 0 :(得分: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

重要提示:如果为一个虚线路径注册了多个配置文件,则按字母顺序排列的第一个显示为附加组件,而其他配置文件则显示为加载项。

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

答案 1 :(得分:2)

是的,您可以从可用附加组件列表中隐藏包;我知道how to do it using five.grok,但也应该有直接的方式。