Skip to main content
Ctrl+K

Plone Training 2023

Trainings

  • Mastering Plone 6 development
    • 1. About Mastering Plone development
    • 2. Introduction
    • 3. The Case Study
    • 4. What is Plone?
    • 5. Installation
    • 6. The Features of Plone
    • 7. Configuring and Customizing Plone "Through The Web"
    • 8. Extending Plone with add-on packages
    • 9. Extending Plone
    • 10. Content types I
    • 11. Content types II: Talk
    • 12. Content types: Reference
    • 13. Customizing Volto Components
    • 14. Volto View Component: A Default View for a "Talk"
    • 15. Develop
    • 16. Behaviors
    • 17. Creating a dynamic frontpage with Volto blocks
    • 18. Programming Plone
    • 19. Turning Talks into Events
    • 20. Vocabularies, Registry-Settings and Control Panels
    • 21. Custom Search
    • 22. Testing in Plone
    • 23. Using Third-Party Behaviors
    • 24. Content types III: Sponsors
    • 25. Upgrade-steps
    • 26. The Sponsors Component
    • 27. Using Volto add-ons
    • 28. Extending Volto with a custom add-on package
    • 29. Extending Volto With a FAQ Block Type
    • 30. Workflow, Roles and Permissions
    • 31. Relations
    • 32. Roundtrip [The voting story] frontend, backend, and REST
      • 32.1. Complex Behaviors [voting story]
      • 32.2. REST API endpoints [voting story]
      • 32.3. Volto Actions and Component State [voting story]
      • 32.4. Permissions [voting story]
    • 33. Releasing your code
    • 34. The code for the training
    • 35. Trainer: Preparation
  • Mastering Plone 5 development
    • 1. About Mastering Plone
    • 2. Introduction
    • 3. What is Plone?
    • 4. Installation & Setup
    • 5. The Case Study
    • 6. The Features of Plone
    • 7. The Anatomy of Plone
    • 8. What's New in Plone 5, 5.1 and Plone 5.2
    • 9. Configuring and Customizing Plone "Through The Web"
    • 10. Theming
    • 11. Extending Plone
    • 12. Extend Plone With Add-On Packages
    • 13. Dexterity I: "Through The Web"
    • 14. Buildout I
    • 15. Write Your Own Add-Ons to Customize Plone
    • 16. Return to Dexterity: Moving contenttypes into Code
    • 17. Views I
    • 18. Page Templates
    • 19. Customizing Existing Templates
    • 20. Views II: A Default View for "Talk"
    • 21. Views III: A Talk List
    • 22. Testing in Plone
    • 23. Behaviors
    • 24. Writing Viewlets
    • 25. Programming Plone
    • 26. IDEs and Editors
    • 27. Dexterity Types II: Growing Up
    • 28. Custom Search
    • 29. Turning Talks into Events
    • 30. User Generated Content
    • 31. Resources
    • 32. Using Third-Party Behaviors
    • 33. Dexterity Types III: Python
    • 34. Dexterity: Reference
    • 35. Relations
    • 36. Manage Settings with Registry, Control Panels and Vocabularies
    • 37. Creating a Dynamic Front Page
    • 38. Creating Reusable Packages
    • 39. More Complex Behaviors
    • 40. A Viewlet for the Votable Behavior
    • 41. Making Our Package Reusable
    • 42. Using starzel.votable_behavior in ploneconf.site
    • 43. Releasing Your Code
    • 44. Buildout II: Getting Ready for Deployment
    • 45. Plone REST API
    • 46. The Future of Plone
    • 47. Optional
    • 48. Using the code for the training
  • Volto Hands-On
    • 1. Introduction
    • 2. Quick Start
    • 3. Project requirements
    • 4. Theming
    • 5. Header
    • 6. Breadcrumbs
    • 7. Footer
    • 8. Edit config and site cleanup
    • 9. Brief introduction to Volto blocks
    • 10. Blocks - Slider Block
    • 11. Configurable Release Block
    • 12. Grid listing Variation
    • 13. Plone Release content type
    • 14. Internationalization
  • Volto Add-ons Development
    • 1. Introduction
    • 2. Volto add-ons development
    • 3. Basic working block
    • 4. Improve the block view
    • 5. Block editing with a form
    • 6. Customizable columns
    • 7. Make the block extensible
    • 8. Add-ons - advanced topics
    • 9. Plone integration with Volto blocks
    • 10. About
    • 11. Developer integration with text editors
    • 12. Really short primer on Javascript enhancements
  • Volto Customization for JavaScript Beginners
    • 1. Introduction
    • 2. Installation
    • 3. Most useful volto settings
    • 4. Volto Weather Block (custom block)
    • 5. Customize Content-type Views and other Components
    • 6. Extend volto blocks
    • 7. Blocks schema and variations
    • 8. Teaser block variations Schema
    • 9. Enhance Teaser block with additional data
    • 10. Usage of StyleWrapper(Styling Schemas) and StyleMenu
    • 11. Extending Teasers per type
    • 12. Create a simple listing block variation
  • Effective Volto
    • About Effective Volto
    • Getting Started
      • 1. Bootstrapping a full Plone 6 project
      • 2. Bootstrapping an Add-on
      • 3. Developer roadmap
    • Architecture
      • 1. Volto Client - Server duality
      • 2. Razzle
      • 3. Webpack
      • 4. Babel
      • 5. Webpack loaders
      • 6. Bootstrap Volto
      • 7. Inside Volto
      • 8. Volto Blocks
      • 9. Configuration Registry
      • 10. Redux
      • 11. CORS
      • 12. Multilingual
    • Backend
      • 1. Plone REST API endpoints
      • 2. Writing an endpoint
      • 3. Writing a serializer or a deserializer
      • 4. Writing a content expansion endpoint
      • 5. Writing a block transform
      • 6. Block field contribute to searchableText
      • 7. Link integrity for blocks
      • 8. Writing Express middleware
    • Add-ons
      • 1. What is a Volto add-on
      • 2. Bootstrap an add-on
      • 3. How does a Volto add-on work?
      • 4. Add a third-party released Volto Add-on in your project
      • 5. Configure an unreleased add-on from an existing repository
      • 6. Volto views
      • 7. Create a block using BlockDataForm
      • 8. Blocks Layout
      • 9. Block Extensions
      • 10. Block Styling
      • 11. Add-on dependencies
      • 12. Add-on and project configuration pipeline
      • 13. Create a theme add-on
      • 14. Extending Semantic UI
      • 15. Create a custom Listing block variation
      • 16. Integrate with Volto’s asyncConnect for SSR
      • 17. Add-on Internationalization
      • 18. Extend Webpack setup from an add-on with razzle.extend.js
    • Testing
      • 1. Acceptance testing
      • 2. Jest
      • 3. Unit testing
      • 4. Storybook
      • 5. Testing add-ons
    • Deployment
      • 1. Recommended deployment schema (aka Seamless mode)
      • 3. [DEPRECATED] Old (pre-seamless mode) deployment
      • 4. Docker
      • 5. release-it
    • Development tools
      • 1. How to setup your development environment using environment variables
      • 2. Environment variables
      • 3. Icons
      • 4. Husky and lint-staged
      • 5. Shortcuts (name aliases)
      • 6. Internationalization
      • 7. Lazyloading components, injectLazyLibs for libraries
      • 8. critical.css
      • 9. Bundle analyzing
      • 10. Component Registry
      • 11. Linters
      • 12. Debugging with Volto
      • 13. VSCode extensions/helpers
      • 14. vim and neovim integration
  • Testing Plone
    • Summary
    • Intro to tests
    • Some theory
    • How to test a Plone add-on
    • Testing setup
    • Unit tests
    • Testing a Dexterity content type
    • Testing a view
    • Acceptance testing
    • Robot tests
    • Continuous Integration
  • Plone 6 Classic UI Theming
    • 1. Preparation for the theming training
    • 2. TTW Customizations
    • 3. Create a theme based on Barceloneta
    • 4. Create a Theme from scratch
    • 5. Create a theme based on Diazo
  • Plone Deployment
    • Introduction
    • Training Setup
    • Introduction to Plone Stack
    • Plone Docker Images
    • Create a new Project
    • Start the Project
    • Customize Your Project
    • Setting Up Your Plone Deployment Server
    • Deploying the Project
  • Plone Workflow
    • Introduction To Workflows
    • Basic Roles and Permissions
    • Local Roles
    • Dynamic Roles
    • Placeful Workflow
    • Multi-chain Workflows
    • Workflow Variables
    • Using GenericSetup to Manage Plone Workflows
  • Migration best practices
    • Migrating Plone
    • In-place migrations
    • Migrating with collective.exportimport
    • Migrate to Volto
    • Migrating from third party systems to Plone

Info

  • Glossary
  • Contributing to Plone Training
    • Building and Checking the Quality of Documentation
    • General Guide to Writing Documentation
    • Authors Guide
  • Teaching
    • 1. Training theory: education, how people learn and process information
    • 2. Before the training: Create material, invite trainees, preparation
    • 3. During training day(s): what to expect, do's and don'ts
    • 4. After the training: Aftercare, keep in touch, learn, improve
28. Custom Search – Mastering Plone 5 development
  • Repository
  • Suggest edit
  • Open issue
  • .md

Custom Search

Contents

  • 28.1. eea.facetednavigation
  • 28.2. collective.collectionfilter

28. Custom Search#

If the chapters about views seem complex, the custom search add-ons shown below might be a great alternative until you feel comfortable writing views and templates.

Here are two add-ons that allow you to add custom searches and content listings through the web ("TTW", requiring no programming: only the web browser) in Plone.

28.1. eea.facetednavigation#

eea.facetednavigation is a full-featured and a very powerful add-on to improve search within large collections of items. No programming skills are required to configure it since the configuration is done TTW.

It lets you gradually select and explore different facets (metadata/properties) of the site content and narrow down you search quickly and dynamically.

  • Install eea.facetednavigation

  • Enable it on a new folder "Discover talks" by clicking on Actions > Enable faceted navigation.

  • Click on the Faceted > Configure to configure it TTW.

    • Select 'Talk' for Portal type, hide Results per page

    • Add a checkboxes widget to the left and use the catalog index Audience for it.

    • Add a select widget for speaker

    • Add a radio widget for type_of_talk

Examples:

  • https://www.dipf.de/en/research/current-projects

  • https://www.mountaineers.org/courses/courses-clinics-seminars

  • https://www.dyna-jet.com/highpressurecleaner

See also

We use the new catalog indexes to provide the data for the widgets and search the results. For other use cases we could also use either the built-in vocabularies (https://pypi.org/project/plone.app.vocabularies) or create custom vocabularies for this.

  • Custom vocabularies TTW using Products.ATVocabularyManager

  • Programming using Vocabularies: https://5.docs.plone.org/external/plone.app.dexterity/docs/advanced/vocabularies.html

28.2. collective.collectionfilter#

A more lightweight solution for custom searches and faceted navigation is collective.collectionfilter. By default it allows you to search among the results of a collection and/or filter the results by keywords, author or type.

It can also be extended quite easily to allow additional filters (like audience).

previous

27. Dexterity Types II: Growing Up

next

29. Turning Talks into Events

Contents
  • 28.1. eea.facetednavigation
  • 28.2. collective.collectionfilter

By Plone Community

© Copyright The text and illustrations in this website are licensed by the Plone Foundation under a Creative Commons Attribution 4.0 International license.