【问题标题】:How do I prevent a content type from appearing in collections?如何防止内容类型出现在集合中?
【发布时间】:2012-04-05 23:29:47
【问题描述】:

如何防止特定内容类型出现在 Plone 3 的集合(智能文件夹)站点范围内?我在 portal_types 以及类型和搜索控制面板中寻找了相关选项(关闭搜索的内容类型似乎对集合没有影响)。

具体情况:我最近在一个 Plone 3.3.5 安装上安装了 plone.app.discussion,现在 cmets 出现在所有集合中。我们希望将它们从集合中移除。

谢谢。

【问题讨论】:

  • 这实际上可能是一个错误,我相信如果您已将它们从搜索结果中删除,它不应该出现在集合中。不是这种情况可能有一些很好的理由,但我不明白为什么他们应该这样做,因为集合是存储的搜索结果。

标签: collections comments plone content-type


【解决方案1】:

门户类型标准基于 plone.app.vocabularies.ReallyUserFriendlyTypes,这是在http://svn.plone.org/svn/plone/plone.app.vocabularies/trunk/plone/app/vocabularies/types.py 中定义的词汇工厂。

如果您通过添加讨论 cmets 来修补 BAD_TYPES,您会将它们从集合中排除,但您也会在使用此词汇工厂的任何地方隐藏它们。据我所知,它们也用于内容规则和搜索控制面板。

您可以通过将这些行添加到自定义包的 __init__.py 文件中来修补 BAD_TYPES:

def initialize(context):
"""Initializer called when used as a Zope 2 product."""
    from plone.app.vocabularies import types
    types.BAD_TYPES = types.BAD_TYPES + ('Discussion Item',)

【讨论】:

  • 代码更正:BAD_TYPES 是一个列表而不是一个元组:types.BAD_TYPES = types.BAD_TYPES + ['Discussion Item',]
【解决方案2】:

如果您没有太多集合,最简单的解决方案可能是添加条件以排除 cmets。您可以轻松获得所有收藏的列表:

http://your-site/search?portal_type%3Alist=Topic

如果您有很多集合,您可能需要编写一些自定义代码来执行此操作。它不一定是产品或任何严肃的东西,只需运行一些代码即可将“排除 cmets”标准添加到现有集合中。我将从查看http://svn.plone.org/svn/collective/Products.ATContentTypes/branches/1.3/Products/ATContentTypes/tests/test_criteria.py 的第 507 行开始

【讨论】:

    【解决方案3】:

    您可以向您的集合添加条件,说明您想要显示的内容类型。您不能(没有修补/黑客)选择要排除的内容。

    即集合可以有类型白名单而不是黑名单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多