Skip to content

collective/collective.collectionfilter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

952 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

collective.collectionfilter

CI Meta

Faceted navigation filter for collection or contentlisting tiles.

Filter listing results for any catalog-indexed field — subjects, authors, portal types, and more. The available filter types can be extended (see collective.collectionfilter.vocabularies).

There are five portlets/tiles available:

  • Collection Filter — filter by values (select, radio, checkbox, link)
  • Collection Search — fulltext search (SearchableText) on collection results
  • Collection Maps — a LeafletJS map that shows and filters IGeolocatable items (requires collective.geolocationbehavior, see below)
  • Collection Result Listing Sort — let users sort the filtered results
  • Collection Filter Reset — reset all active filters

Filtering collections

Add filter/search portlets directly to a collection. Selecting filter values reloads results asynchronously (no page refresh) via AJAX.

If your theme or view template needs customization for AJAX loading, adjust the Content Selector and/or View Template settings. Make sure the selector exists on both the source collection template and the target page.

Filters can also target a remote collection — specify a target collection in the portlet/tile settings. Without AJAX, selecting a filter option redirects to the collection.

Mosaic integration

Install the extra:

pip install collective.collectionfilter[mosaic]

Add filter tiles via the Mosaic Insert menu and assign a collection. Use a Content Listing tile to display results.

Multiple content listings and filters can coexist on the same page — use unique CSS classes in the listing tile settings and reference them in the filter tile's Content Selector.

Geolocation support

Install the extra:

pip install collective.collectionfilter[geolocation]

This provides a LeafletJS map tile/portlet showing IGeolocatable collection items. Enable Narrow down results to filter the collection and other tiles when the user pans or zooms the map.

Customizing GroupByCriteria

GroupByCriteria is a global utility that defines which catalog indexes are available as filter criteria.

Each index entry has this structure:

{
    'index': 'Subject',              # catalog index name
    'metadata': 'Subject',           # metadata column name
    'display_modifier': _,           # callable(value, index) -> display string
    'index_modifier': None,          # callable to transform search values
    'value_blacklist': [],           # values to exclude (list or callable)
    'sort_key_function': lambda it: it['title'].lower(),
}

To customize, register an IGroupByModifier adapter:

from collective.collectionfilter.interfaces import IGroupByCriteria
from collective.collectionfilter.interfaces import IGroupByModifier
from zope.component import adapter
from zope.interface import implementer


@implementer(IGroupByModifier)
@adapter(IGroupByCriteria)
def groupby_modifier(groupby):
    groupby._groupby['Subject']['display_modifier'] = lambda x, idx: x.upper()
    groupby._groupby['my_custom_index'] = {
        'index': 'my_custom_index',
        'metadata': 'my_custom_metadata',
        'display_modifier': lambda val, idx: f'Custom: {val}',
    }
<configure xmlns="http://namespaces.zope.org/zope">
  <adapter factory=".mymodule.groupby_modifier" name="my_modifier" />
</configure>

The adapter is called by GroupByCriteria.groupby. Modify the _groupby dict (not the groupby property, which triggers adapter lookup).

Compatibility

  • Version 6.x — Plone 6.2+
  • Version 5.x — Plone 6.0+
  • Version 4.x — Plone 5.2
  • Version 3.x — Plone 5.0/5.1

If AJAX loading doesn't work with your theme, disable it in the registry or override via diazo.

Authors

  • Johannes Raggam
  • Peter Holzer

Based on collective.portlet.collectionfilter and collective.portlet.collectionbysubject.

About

Plone addon for filtering collection results

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors