跳转到主要内容

用于过滤集合结果的Plone插件。

项目描述

collective.collectionfilter

CI Meta

针对集合或内容列表瓷砖的维度导航筛选器。

这个Plone 5插件允许您筛选目录(Plone内部搜索工具)中索引的字段。例如,您可以添加主题筛选器,也可以添加作者或门户类型的筛选器。

筛选类型可以扩展(见:collective.collectionfilter.vocabularies)。

有三个可用的端口/瓷砖用于筛选

集合筛选器

一个包含值的列表(选择、单选、复选框、链接),您可以根据这些值进行筛选

集合搜索

一个可搜索文本输入字段,用于在集合结果上执行全文搜索

集合地图

一个LeafletJS地图,显示并筛选地图上的IGeolocatable项目(如果已安装collective.geolocationbehavior并且行为已在内容类型上激活,则此功能可用。请参阅以下安装说明)

集合结果列表排序

用户可以对筛选结果列表进行排序的索引列表

集合筛选器重置

一个重置所有筛选器的链接

筛选集合结果

将多个筛选器/搜索端口直接添加到集合中。

当您从筛选器中选择值时,结果会异步加载到页面上(无需刷新页面)。除非您已在注册表中关闭ajax加载或正在使用Plone 5.0。如果您使用特殊主题或视图模板,您可以自定义Content Selector和/或`View Template`以确保ajax加载正确工作。请确保选择器存在于源集合模板和显示筛选结果的页面上。

您还可以通过指定目标集合来使用不在集合上直接使用的筛选器端口。要使用ajax加载,您需要确保您的内 容选择器在页面上可见。如果不使用ajax加载,选择筛选器选项将导致您重定向到集合。

拼贴集成

使用包额外部分安装所需的依赖关系

[buildout]
...
eggs +=
    collective.collectionfilter[mosaic]
...

您可以在拼贴编辑器中将这三个瓷砖添加多次。只需在插入菜单中选择它们,并将集合分配给它。要显示集合的结果,只需添加一个内容列表瓷砖。

您可以通过在列表瓷砖设置中指定附加的唯一类,然后在筛选器瓷砖的Content Selector设置中添加这些类,在同一页面上使用多个内容列表和多个筛选器。

如果您想使用与集合一起使用的筛选器瓷砖,请添加一个内容列表瓷砖,并设置使用上下文查询。如果您的集合视图上有唯一选择器,还可以使用嵌入内容瓷砖。

地理位置筛选器支持

如果已安装collective.geolocationbehavior,则此包提供LeafletJS地图瓷砖/端口,如果集合结果中的项目具有IGeolocatable信息,则显示每个项目。此外,您还可以激活缩小结果复选框,以便在用户移动或缩放地图时缩小集合结果和其他可用的筛选器瓷砖/端口。

我们提供了一个包额外部分,用于安装所有必需的依赖关系及其相应版本。只需在buildout中的某个位置执行此操作即可。

[buildout]
...
eggs +=
    collective.collectionfilter[geolocation]
...

覆盖GroupByCriteria

collective.collectionfilter.vocabularies.GroupByCriteria是一个单例,作为全局实用工具注册,并用于提供可能的索引列表,这些索引分组值将提供您的筛选标准。

它使用如下数据结构:

self._groupby = {
    it: {                   # Index name
        'index': it,             # Name of the index to use
        'metadata': it,          # Name of the metadata column to use
        'display_modifier': _ ,  # Function to prepare the metadata column value for displaying
        'index_modifier': None,  # Function to transform the index search value.
        'value_blacklist': [],   # Blacklist of index values, which should not included in the filter selection. Can be a callable.
        'sort_key_function': lambda it: it['title'].lower(),  # sort key function. defaults to a lower-cased title
    }
    for it in metadata
}

如您所见,标准的GroupByCriteriaVocabulary实现意味着索引名称与元数据列名称相同。此外,我们使用collective.collectionfilter消息目录作为标准显示修改器(您可以在collective.collectionfilter域下注册翻译以翻译索引值)。

如果您需要一个特殊的display_modifier,或者索引或元数据列没有相同的标识符,您可以修改此数据结构。为此,注册一个适配器以适配IGroupByModifier,该适配器适用于GroupByCriteria实用程序。在此适配器中,您可以修改已填充的_groupby属性(不要使用groupby,这是一个属性方法,在此点尚未完成)。

就是这样。

编写适配器

# -*- coding: utf-8 -*-
from collective.collectionfilter.interfaces import IGroupByCriteria
from collective.collectionfilter.interfaces import IGroupByModifier
from zope.component import adapter
from zope.interface import implementer


sort_map = {
    'VALUE1': 3,
    'VALUE2': 1,
    'VALUE3': 2,
}


def subjectsort(it):
    # Sorts the value after a fixed sort map
    val = it['title']
    return sort_map.get(val, 0)


@implementer(IGroupByModifier)
@adapter(IGroupByCriteria)
def groupby_modifier(groupby):
    groupby._groupby['Subject']['display_modifier'] = lambda x, idx: x.upper()
    groupby._groupby['Subject']['sort_key_function'] = subjectsort
    groupby._groupby['my_new_index'] = {
        'index': 'my_new_index',
        'metadata': 'my_new_index_metadata_colum',
        'display_modifier': lambda it, idx: u'this is awesome: {0}'.format(it)
    }

注册适配器

<configure xmlns="http://namespaces.zope.org/zope">
  <adapter factory=".collectionfilter.groupby_modifier" name="modifier_1" />
</configure>

完成。

您的适配器由collective.collectionfilter.vocabularies.GroupByCriteria.groupby调用。

兼容性

  • 版本5.x与Plone 6.x+兼容

  • 版本4.x与Plone 5.2+兼容

  • 版本3.x与Plone 5.0.x和5.1.x兼容

如果您的主题与AJAX加载不兼容,这可以通过注册表或diazo覆盖。

作者

  • Johannes Raggam

  • Peter Holzer

此包基于collective.portlet.collectionfiltercollective.portlet.collectionbysubject

5.2.1 (2024-08-30)

错误修正

  • 修复过滤端口/瓷砖中复选框/单选按钮的Bootstrap CSS类。

    升级依赖关系。

    [petschki] (#211)

5.2.1 (未发布)

  • 尚未更改。

5.2.0 (2023-09-27)

新功能

  • 添加重置按钮以重置所有过滤器。[toalba, jensens] (reset-button)

错误修正

  • 修复从“端口标题”到“过滤标题”的德语标签。[jensens] (detranslation)

5.1.1 (2023-08-08)

新功能

  • 实现CSS类以禁用当增强自定义过滤器模板中的链接设计为执行其他操作(例如下拉菜单或可折叠部分)时collectionfilter:reload事件。[petschki] (#201)

错误修正

  • 修复具有内容列表瓷砖的拼贴页的默认content_selector选择。[petschki] (#202)

5.1 (2023-08-02)

错误修正

  • 修复同一页面上有多个内容列表时的过滤瓷砖。[petschki] (#150)

内部

  • 更新配置文件。[plone 开发者] (8af8caab)

变更日志

5.1 (未发布)

  • 尚未更改。

5.0 (2023-06-07)

  • pat-leaflet实现geojson_ajaxurl属性,以异步加载geojson信息。[petschki]

  • 修复瑞士德语的翻译。[agitator]

5.0a2 (2022-06-20)

  • 更新分类器。[petschki]

5.0a1 (2022-06-20)

重大变更

  • 添加Plone 6 ES6兼容的包

  • 添加Plone 6 ES6兼容的JS和SCSS资源

  • 添加Plone 6 JavaScript包基础设施

  • 更新端口模板,Plone 6兼容,使用“cards”元素

  • 添加升级步骤以删除旧注册设置

  • 在元数据中增加版本号

  • 添加tox测试基础设施

  • 更新github工作流程,从矩阵中删除Plone 5 [1letter]

4.0 (2022-05-10)

重大变更

  • 移除Plone 5.0和5.1支持。[petschki]

  • 在display_modifier调用中添加idx参数,以便我们可以使用索引名称解析collective.taxonomy中正确的已翻译分类标题。这意味着groupby_modifier适配器中的display_modifier方法也需要期待此参数![MrTango]

功能

  • 添加复选框以反转输出过滤器。[jensens]

  • 支持并测试Plone 6。[jensens]

  • 向c.c.tiles添加模块全局COLLECTIONISH_TARGETS,以注册与plone.app.standardtiles.contentlisting不同的集合的其它瓷砖。[jensens]

错误修正

  • 修复瓷砖中的b_start,其中键是预/后缀。从新过滤器中也移除这些,以防止在不存在的新过滤结果页面上。

  • 并非每个元数据条目都有一个具有相同名称的索引。如果没有成对,则忽略。

  • 修复/解决#59(索引中的int字段不起作用)的问题。[jensens]

  • 从安装视图中隐藏卸载配置文件。[jensens]

  • 修复了“所有”未翻译的边缘情况。[agitator]

  • 确保GroupByCriteriasort_key_function函数中的lower()调用得到一个字符串。[jensens]

  • 修复了只搜索非字母数字字符导致显示异常的问题。[JeffersonBledsoe]

其他

  • 代码风格黑色和Isort [jensens]

3.5.1 (2021-05-26)

  • 更新了de和ch-de翻译。[agitator]

3.5 (2021-05-26)

  • 使用上下文中的集合作为默认值。target_collection现在用于选择作为结果源的替代集合。这允许复制和粘贴预先配置的集合以进行重用,而无需重新配置每个筛选元素。[agitator]

  • 修复包含“和”、“或”和“不”等术语的搜索。[jeffersonbledsoe]

3.4.2 (2021-02-25)

  • 当页面通过AJAX加载时,不要渲染筛选图块。[petschki]

  • 不要多次添加隐藏字段 collectionfilter。修复了#116。[petschki]

3.4.1 (2020-06-18)

  • 分离了portal_type和Type的翻译display_modifier。[iham]

3.4 (2020-06-16)

功能

  • 添加排序图块/端口以向最终用户填充选定的排序索引。[petschki]

  • 为portal_type和Type添加了翻译display_modifier。[iham]

错误修正

  • 修复了没有operator能力的索引的filter_type。修复了#74。[petschki]

3.3 (2020-01-22)

  • 修复is_available属性。[agitator]

  • 添加css_modifier以扩展筛选项的CSS类。[agitator]

  • 修复布尔值的检查。[tmassman]

  • 修复filter_value的翻译。[petschki]

3.2.1 (2019-08-07)

错误修正

  • 修复由pattern选项ajaxLoad引入的bug。[petschki]

3.2 (2019-07-23)

功能

  • 恢复5.0.x兼容性。[djay, quang]

  • 将结果和端口的AJAX加载作为模式选项,以便主题可以覆盖它。[quang]

  • 将集合选择器更改为默认显示父级,这样就不必点击返回。[djay]

错误修正

  • 修复了端口的配置文件双显示问题。[agitator]

  • 修复了筛选URL在UTF编码后再次转换为unicode的bug。[djay]

  • 修复了5.2中的问题,其中不应在所有索引类型上使用运算符。[djay]

  • 修复了批量中下一页显示未筛选结果的问题。[djay]

  • 修复了端口号没有地理定位依赖项时无法工作的问题。[djay]

3.1 (2019-06-06)

新功能

  • 地理定位筛选。[petschki, thet]

错误修正

  • 删除对plone.app.upgrade的依赖。[agitator]

  • target collection限制为可配置的注册值。默认为['Collection', ]。[petschki]

  • 修复了Python 3中的非可迭代目录元数据值。[petschki]

  • 使用来自plone.formwidget.geolocation的Map Layer翻译。[petschki]

  • 修复了None值在safe_interable中的问题。[petschki]

  • 修复了空SearchableText字段(见#56)的问题。[petschki]

3.0 (2019-03-25)

破坏性更改

  • 删除对Plone < 5.1的支持。[petschki]

新功能

  • Python 3兼容性。[petschki]

  • 测试设置 [petschki]

错误修正

  • 修复了@@render-portlet在Python 3中的bug。注意:在Python 3中:这需要plone.app.portlets >= 4.4.2 [petschki]

2.1 (2019-03-22)

新功能

  • Python 3兼容性。[agitator]

错误修正

  • 不要渲染空的filterClassName。[thet]

  • patCollectionFilter不在设置中,它在视图中。[agitator]

  • 修复了长/多行筛选术语的样式。[agitator]

2.0.1 (2018-12-13)

  • 修复了升级步骤和重新应用配置文件以修复包注册的问题。删除条件重新初始化 - 导致其他模式出现问题 [agitator]

2.0 (2018-12-08)

破坏性更改

  • 删除cache_time设置,并用cache_enabled替换。

  • collectionsearch.pt:将视图属性header_title更改为title

  • 依赖于plone.app.contenttypes。所有目标集合必须提供plone.app.contenttypes.behaviors.collection.ICollection接口。将调用此行为适配器的result方法。

  • 筛选图块编辑链接隐式依赖于Font Awesome。这需要重新审查以使其正常工作。

  • 使用现代标记以简化样式。

新增

  • 通过包括当前语言、用户角色而不是id和数据库计数器来优化缓存键。

  • 在填充浏览器历史记录时删除 view_name 部分。view_name 部分用于加载特定的 AJAX 瓦片,但可能不应显示。

  • 添加筛选和搜索瓦片。

  • sort_key_function 键添加到 IQueryModifier 字典中,以便在排序值时使用不同的排序键函数。

  • index_modifier 键添加到 IQueryModifier 索引字典中,以便转换索引搜索值。对于 KeywordIndex 索引,index_modifier 自动设置为将值编码为 utf-8。

  • value_blacklist 键添加到 IQueryModifier 索引字典中,以便将单个索引值列入黑名单。

  • 添加 view_name 配置参数以调用特殊的结果列表视图。这可以用来调用瓦片而不是整个上下文视图。

  • 添加 content_selector 配置参数以从源中选择 DOM 节点注入到目标中。

  • 确保在内容筛选器遍历处理程序不需要运行时退出。

  • 与 Plone 5.0 兼容 [nngu6036, instification]

错误修正

  • 在 JavaScript 中重新加载集合时,使用内容选择器的父元素作为触发事件的基础。内容选择器本身被替换,无法捕获事件。

  • 将捆绑编译文件注册为 collectionfilter-bundle-compiled.jscollectionfilter-bundle-compiled.css,以便使用 plone-compile-resources 时产生相同的文件。参见: https://github.com/plone/Products.CMFPlone/issues/2437

  • 按筛选标题而不是筛选值对筛选值列表进行排序。

  • 修复 collectionsearch 模板 [petschki]

  • 提供自定义 IGroupByCriteria 适配器时,如果没有提供 sort_key_function,则回退到标题排序值。 [petschki]

1.0.1 (2018-02-09)

  • 修复通过目录词汇和 RelatedItemsFieldWidget 选择目标集合的问题。 [agitator]

1.0 (2018-01-27)

  • 实现集合搜索插件的 AJAX 搜索。 [thet]

  • 更新历史记录/地址栏 URL,使其包含当前的筛选 URL。 [thet]

  • 修复了 closest DOM 方法在 IE 中不受支持的错误。修复 #6。 [agitator]

  • 将捆绑注册为依赖于 *,以避免奇怪的 Select2 初始化错误。 [thet]

  • 添加 input_type 选项以更好地选择输入类型。为下拉菜单添加 input_type 支持。删除 as_input 属性并提供升级步骤。 [thet]

  • 从 collective.portlet.collectionfilter 发布的第一个版本。 [thet]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

collective_collectionfilter-5.2.1.tar.gz (1.5 MB 查看哈希值)

上传时间: 源代码

构建分发版

collective.collectionfilter-5.2.1-py3-none-any.whl (2.4 MB 查看哈希值)

上传时间: Python 3

支持者