Files
awesome-awesomeness/terminal/plone
2024-04-19 23:37:46 +02:00

290 lines
44 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
 Awesome Plone !Awesome (https://awesome.re/badge.svg) (https://awesome.re)
 (https://plone.org)
▐ A community-curated list of _awesome_ Plone add-ons.
Plone (https://plone.org) is a open source CMS written in Python with a focus on functionality, customizability and security out of the box.
There are over 3000 add-ons for Plone on pypi (https://pypi.org/search/?q=&o=&c=Framework+%3A%3A+Plone) and over 1500 repositories in the collective (https://github.com/collective/). If you want to know if there is already a add-on for 
Plone that fits your needs, searching for it on GitHub or pypi can be hard. It's hard to understand which one could be a good solution or not.
This list is intended to fill that gap, and create a shared knowledge about common products and techniques.
For a filterable list of addons aggreating all Plone related packages from PyPi see https://pag.derico.tech.
This list only covers add-ons that work with the latest major versions of Plone (currently 5.2 and 6) and only those that support Python 3.
Plone 6 comes with a new default frontend called Volto, which is written in React and uses plone.restapi to communicate with Plone. Volto is very extendable in itself. Checkout the awesome-volto list 
(https://github.com/collective/awesome-volto) for add-ons to Volto.
Contents
⟡ Content and utilities for content (#content-and-utilities-for-content)
⟡ Searching and Categorizing (#searching-and-categorizing)
⟡ Layout (#layout)
⟡ Tiles (#tiles)
⟡ Events (#events)
⟡ Forms (#forms)
⟡ Multilingual (#multilingual)
⟡ Media (#media)
⟡ Security (#security)
⟡ SEO (#seo)
⟡ Authentication (#authentication)
⟡ Shop (#shop)
⟡ Export, Import and Migrations (#export-import-and-migrations)
⟡ Themes (#themes)
⟡ Develop (#develop)
⟡ Sysadmin (#sysadmin)
⟡ Finding more add-ons (#finding-more-add-ons)
⟡ Official resources (#official-resources)
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Content and utilities for content
_Add-ons that provide content-types or additional functionality for content_
⟡ collective.a11ycheck (https://github.com/collective/collective.a11ycheck) - Reports accessibility issues to your site editors when a page is saved.
⟡ collective.bbcodesnippets (https://github.com/collective/collective.bbcodesnippets) - Provides generic and extensible BBCode markup integration for Plone.
⟡ collective.consent (https://github.com/collective/collective.consent) - Ask users for consent to different topics, before they can continue.
⟡ collective.dexteritytextindexer (https://github.com/collective/collective.dexteritytextindexer) - Dynamic SearchableText index for dexterity content types. For Plone 6 this was merged into Plone core.
⟡ collective.documentgenerator (https://github.com/collective/collective.documentgenerator) - Generate Documents (.odt, .pdf, .doc) from content based on appy framework (https://appyframe.work/) and OpenOffice/LibreOffice.
⟡ collective.documentviewer (https://github.com/collective/collective.documentviewer) - Very nice document viewer that integrates DocumentCloud viewer and PDF processing into Plone.
⟡ collective.easyformplugin.createdx (https://github.com/collective/collective.easyformplugin.createdx) - Creates Plone content objects from EasyForm submissions.
⟡ collective.embeddedpage (https://github.com/collective/collective.embeddedpage) - A content type to embed remote HTML pages in Plone Classic and Volto.
⟡ collective.folderishtraverse (https://github.com/collective/collective.folderishtraverse) - Traverse to first item in folder.
⟡ collective.folderishtypes (https://github.com/collective/collective.folderishtypes) - Provides the types "Folderish Event", "Folderish News Item" and "Folderish Document" as replacements for default types. Those types are able to hold
any other content, like a Folder.
⟡ collective.geolocationbehavior (https://github.com/collective/collective.geolocationbehavior) - Geotagging for Plone content using LeafletJS.
⟡ collective.glossary (https://github.com/collective/collective.glossary) - Content type to define a glossary and its terms.
⟡ collective.immediatecreate (https://github.com/collective/collective.immediatecreate) - Create content immediatly and skip the add form.
⟡ collective.lineage (https://github.com/collective/collective.lineage) - Subsites: Turns subfolders of a Plone site to appear as autonomous Plone sites. There is also a whole ecosystem off addons specific to subsites.
⟡ collective.mailchimp (https://github.com/collective/collective.mailchimp) - MailChimp newsletter integration for Plone.
⟡ collective.mirror (https://github.com/collective/collective.mirror) - A content type that mirrors the content of any other container.
⟡ collective.mustread (https://github.com/collective/collective.mustread) - Tracking user views on content that are marked as must-read.
⟡ collective.remoteproxy (https://github.com/collective/collective.remoteproxy) - Proxy for remote content. All remote URLs for which a local proxy was created are replaced in the resulting content.
⟡ collective.restrictportlets (https://github.com/collective/collective.restrictportlets) - Allows you to restrict the available portlets that non-Managers can add.
⟡ collective.richdescription (https://github.com/collective/collective.richdescription) - Formatable description field for Plone.
⟡ collective.workspace (https://github.com/collective/collective.workspace) - Easily manage 'membership' in specific areas of a Plone Site. It allows to grant people access to areas of content using a membership group rather than local 
roles for each user, and to delegate control over that group to people who don't have access to the site-wide user/group control panel.
⟡ dexterity.membrane (https://github.com/collective/dexterity.membrane) - Enables content to be used as users and groups in Plone sites.
⟡ plone.pdfexport (https://github.com/plone/plone.pdfexport) - Generic PDF export functionality for Plone content.
⟡ Products.EasyNewsletter (https://github.com/collective/Products.EasyNewsletter) - Powerful newsletter/mailing product for Plone.
⟡ zopyx.ipsumplone (https://github.com/zopyx/zopyx.ipsumplone) - Creates demo content and demo images for Plone.
Searching and Categorizing
⟡ cioppino.twothumbs (https://github.com/collective/cioppino.twothumbs) - Rate content using up- and down-thumbs.
⟡ collective.bookmarks (https://github.com/collective/collective.bookmarks) - Bookmarks/ favorites/ wish-list for Plone.
⟡ collective.collectionfilter (https://github.com/collective/collective.collectionfilter) - Faceted navigation filter for collection or contentlisting tiles.
⟡ collective.elasticsearch (https://github.com/collective/collective.elasticsearch) - Use ElasticSearch as the search backend for Plone.
⟡ collective.elastic.plone (https://github.com/collective/collective.elastic.plone) - ElasticSearch Integration for Plone content.
⟡ collective.searchandreplace (https://github.com/collective/collective.searchandreplace) - Find and replace text in Plone content objects.
⟡ collective.solr (https://github.com/collective/collective.solr) - Solr search engine integration for Plone.
⟡ collective.taxonomy (https://github.com/collective/collective.taxonomy) - Create, edit and use hierarchical taxonomies to categorize content.
⟡ eea.facetednavigation (https://github.com/collective/eea.facetednavigation) - Very powerful interface to improve search without programming skills. Configuration is done through-the-web and lets you gradually select and explore 
different facets (metadata/properties) of the content and narrow down you search quickly and dynamically.
⟡ Products.PloneKeywordManager (https://github.com/collective/Products.PloneKeywordManager) - Change, merge and delete keywords/tags/subjects).
⟡ zopyx.typesense (https://github.com/zopyx/zopyx.typesense) - Plone integration with the external Typesense search server (open-source). This is an alternative to collective.solr or Elasticsearch.
Layout
_Products and resources that help developers and users to create and manage site layouts._
⟡ plone.app.mosaic (https://github.com/plone/plone.app.mosaic) - Powerful and extendable editor that allows users to compose the content of a page with different tiles.
⟡ collective.cover
 (https://github.com/collective/collective.cover) - Cover allows the creation of elaborate covers built around a drag-and-drop interface. Uses the same blocks/tiles ecosystem as plone.app.mosaic but a different approach to editing.
⟡ collective.contentsections (https://github.com/collective/collective.contentsections) - Offers a block approach for Plone 6 Classic based entirely on Dexterity content types.
Tiles
_Add-ons that extend the layout editor plone.app.mosaic._
⟡ plone.app.standardtiles (https://github.com/plone/plone.app.standardtiles) - A set of standard tiles used by Mosaic, but can be used from any other tile manager.
⟡ collective.tiles.carousel (https://github.com/collective/collective.tiles.carousel) - A slider tile for plone.app.mosaic based on the carousel component of Bootstrap 5.
⟡ collective.tiles.advancedstatic
 (https://github.com/collective/collective.tiles.advancedstatic) - A tile that shows html text (similar to the static text portlet), with some additional configuration like the possibility to add custom css classes.
⟡ collective.tiles.collection (https://github.com/collective/collective.tiles.collection) - A tile that shows a set of collection results with possibility to choose (and develop) custom layouts.
Events
_Add-ons that handle events and calendars._
⟡ collective.easyformplugin.registration (https://github.com/collective/collective.easyformplugin.registration) - Add a behavior to collective.easyform to manage registration forms for events.
⟡ collective.fullcalendar (https://github.com/collective/collective.fullcalendar) - Display events in a nice calendar UI using https://fullcalendar.io.
⟡ collective.venue (https://github.com/collective/collective.venue) - Venue type with geolocation support for use with events or any other location specific content.
Forms
_Add-ons that allow generating and using forms._
⟡ collective.easyform (https://github.com/collective/collective.easyform) - EasyForm provides a Plone form builder through-the-web using fields, widgets, actions and validators. Form input can be saved or emailed. A simple and 
user-friendly interface allows non-programmers to create custom forms.
⟡ collective.fieldedit (https://github.com/collective/collective.fieldedit) - A flexible form to edit selected fields of a content type.
⟡ collective.honeypot (https://github.com/collective/collective.honeypot) - Honeypot protection for forms.
⟡ collective.z3cform.datagridfield (https://github.com/collective/collective.z3cform.datagridfield) - A field with a datagrid (table), where each row is a sub form.
⟡ collective.z3cform.norobots (https://github.com/collective/collective.z3cform.norobots) - A "human" captcha widget based on a list of questions/answers.
⟡ plone.formwidgets.hcaptcha (https://github.com/plone/plone.formwidget.hcaptcha) - HCaptcha widget to protect Plone from bots, spam, and other forms of automated abuse.
⟡ yafowil.plone (https://github.com/bluedynamics/yafowil.plone) - Yafowil is a form library for Python. This is its Plone Integration package.
Multilingual
_Add-ons to help manage multilingual sites._
⟡ collective.linguatags (https://github.com/collective/collective.linguatags) - Multilingual Tags for Plone.
⟡ plone.app.multilingualindexes (https://github.com/plone/plone.app.multilingualindexes) - Indexes optimized to query multilingual content made with plone.app.multilingual.
Media
_Add-ons that handle image, video and audio content._
⟡ collective.autoscaling (https://github.com/collective/collective.autoscaling) - Automatic scaling of large images. Useful to reduce your database size when editors upload too large images.
⟡ collective.behavior.banner (https://github.com/collective/collective.behavior.banner) - A behavior to create banners and sliders from banners.
⟡ collective.lazysizes (https://github.com/collective/collective.lazysizes) - Integration of lazysizes, a lightweight lazy loader, into Plone.
⟡ collective.wavesurfer (https://github.com/collective/collective.wavesurfer) - Implementation of https://wavesurfer-js.org audio player for Plone.
⟡ plone.app.imagecropping (https://github.com/collective/plone.app.imagecropping) - Crops Images in Plone manually using cropper JS library.
⟡ plone.gallery (https://github.com/plone/plone.gallery) - Photo gallery view for Plone.
⟡ redturtle.gallery (https://github.com/RedTurtle/redturtle.gallery) - Adds a gallery view with a carousel made with slick.
⟡ wildcard.media (https://github.com/collective/wildcard.media) - Provides audio and video content types and behaviors.
Security
⟡ collective.explicitacquisition (https://github.com/collective/collective.explicitacquisition) - Disallow access to acquired content outside the current path.
⟡ collective.geotransform (https://github.com/collective/collective.geotransform) - Graceful E-mail Obfuscation for Plone.
SEO
_Add-ons for search engine optimization._
⟡ bda.plone.gtm (https://github.com/bluedynamics/bda.plone.gtm) - Google Tag Manager Integration.
⟡ collective.behavior.seo (https://github.com/collective/collective.behavior.seo) - Adds extra fields used for SEO optimisation.
⟡ collective.splitsitemap (https://github.com/collective/collective.splitsitemap) - Provides a cached split sitemap on big public sites.
Authentication
_A list of authentication plugins, to integrate Plone with external user , Importsources and Migrations.import_
⟡ pas.plugins.ldap (https://github.com/collective/pas.plugins.ldap) - Provides users and groups from a LDAP directory.
⟡ pas.plugins.authomatic (https://github.com/collective/pas.plugins.authomatic) - Authomatic OAuth1/OAuth2/OpenID Login Integration with Plone.
⟡ iw.rejectanonymous (https://github.com/collective/iw.rejectanonymous) - Reject unconditionnally anonymous users from a Plone site, without any change in your security policy matrix or workflows. The basic use case is an extranet, 
where all visitors must be authenticated.
⟡ pas.plugins.headers (https://github.com/collective/pas.plugins.headers) - Reads request headers and uses them for authentication. Think SAML headers that are set by a front web server like Apache or nginx.
⟡ dm.zope.saml2 (https://pypi.org/project/dm.zope.saml2/) - Supports SAML2 based Single Sign-On.
⟡ collective.impersonate (https://github.com/collective/collective.impersonate) - Allow administrators to impersonate another user. Useful for verifying workflow/permission set up on real content.
⟡ collective.pwexpiry (https://github.com/collective/collective.pwexpiry) - Provideds methods for stronger user passwords in Plone and password attack protection.
Shop
⟡ bda.plone.productshop (https://github.com/bluedynamics/bda.plone.productshop) - Flexible and modular e-commerce solution for Plone.
Export, Import and Migrations
⟡ collective.exportimport (https://github.com/collective/collective.exportimport/) - Export and import content and a lot of other data from and to Plone. The main solution for all kinds of migrations based on plone.restapi.
⟡ collective.migrationhelpers (https://github.com/collective/collective.migrationhelpers/) - Helpers and examples to use during migrations.
⟡ collective.jsonify (https://github.com/collective/collective.jsonify) - Export Plone content to JSON.
⟡ collective.transmogrifier (https://github.com/collective/collective.transmogrifier) - A configurable pipeline, aimed at transforming content for import and export.
Themes
⟡ plonetheme.tokyo (https://github.com/collective/plonetheme.tokyo) - Tokyo Theme for Plone implements Bootstrap 4 into Plone, with an emphasis on keeping things as close to "default" as possible.
⟡ plonetheme.grueezibuesi (https://github.com/collective/plonetheme.grueezibuesi) - A kitten inspired theme for Plone 6.
⟡ collective.sidebar (https://github.com/collective/collective.sidebar) - A sidebar that consolidates toolbar and navigation.
⟡ collective.editablemenu (https://github.com/RedTurtle/collective.editablemenu) - A customizable navigation menu for Plone.
Develop
_Add-ons that help developing Plone_
⟡ Products.PDBDebugMode (https://github.com/collective/Products.PDBDebugMode) - Post-mortem debugging: open a pdb session whenever an exception occurs so you you can find out what is going wrong. Plus: By adding /pdb to a url you end up
you in a pdb session on the current context. A killer tool for developers.
⟡ plone.app.debugtoolbar (https://github.com/plone/plone.app.debugtoolbar) - A toolbar that shows a wealth of debug information about a running Plone site and the content you are inspecting. Also includes a interactive python-shell, a 
TALES-expression evaluator and and code-reload.
⟡ plone.reload (https://github.com/plone/plone.reload) - Code and configuration reload without server restarts.
⟡ Products.PrintingMailHost (https://github.com/collective/Products.PrintingMailHost) - Log mail messages instead of sending mail.
⟡ experimental.gracefulblobmissing (https://github.com/collective/experimental.gracefulblobmissing/) - Gracefully handle missing binary files in Plone.
⟡ collective.patchwatcher (https://github.com/collective/collective.patchwatcher) - A great companion for keeping track of patched or overridden files.
⟡ collective.relationhelpers (https://github.com/collective/collective.relationhelpers) - Helpers to manage, create, export and rebuild relations in Plone 5.x. For Plone 6 this was merged into Plone core.
Sysadmin
_Add-ons that help admins deploying and maintaining Plone_
⟡ collective.catalogcleanup (https://github.com/collective/collective.catalogcleanup) - Removes data from the catalog that no longer belong to an actual object.
⟡ collective.fingerpointing (https://github.com/collective/collective.fingerpointing) - Keeps track of different events and write them down to an audit log.
⟡ collective.ifttt (https://github.com/collective/collective.ifttt) - Enables any Plone site to play in the IFTTT ecosystem. For example when a news item is published, then tweet about it or post it on Facebook.
⟡ collective.purgebyid (https://github.com/collective/collective.purgebyid) - Use tag-based cache invalidation in Plone (e.g. with Varnish's xkey module).
⟡ collective.recipe.backup (https://github.com/collective/collective.recipe.backup) - Powerful and flexible backup/restore solution for Plone.
⟡ collective.regenv (https://github.com/collective/collective.regenv) - Override registry settings using environment variables.
⟡ collective.revisionmanager (https://github.com/collective/collective.revisionmanager) - Manage Products.CMFEditions histories that can bloat your database.
⟡ collective.sentry (https://github.com/collective/collective.sentry) - Sentry integration to aggregate errors and help finding their causes.
⟡ dm.historical (https://pypi.org/project/dm.historical) - Access any historical state of your database. Can be useful to find out what happened to objects in the past and to restore accidentally deleted or modified objects.
⟡ haufe.requestmonitoring (https://github.com/collective/haufe.requestmonitoring) - Detailed request logging functionality on top of the publication events. Useful to find out what takes longer than it should.
Finding more add-ons
It can be hard to find the right add-on for your requirements.
Here are some tips:
⟡ Make a list of required features.
⟡ Look in this list first.
⟡ Search pypi: https://pypi.org/search/?c=Framework+%3A%3A+Plone
⟡ Search the collective organization on github: https://github.com/collective
⟡ Search the plone organization on github: https://github.com/plone
⟡ Google for your requirements
Once you have a shortlist, test these add-ons. Here are the main issues you need to test before you install an add-on on a production site:
⟡ Test all required features. Read but do not trust the documentation
⟡ Check if the add-on runs on your required version
⟡ Check if it is maintained
⟡ Does it have i18n-support, i.e. is the user-interface translated to your language?
⟡ Does it uninstall cleanly?
⟡ Check for unwanted dependencies
Once you found an add-on you like, you can ask the community if you made a good choice or if you missed something:
⟡ Message Board: https://community.plone.org
If you can't find something that fits your requirements 100% you can:
⟡ Adapt your requirements to what is available.
⟡ Invest the time & money to customize an existing add-ons to better fit your needs.
⟡ Create a new add-on that does exactly what you need.
Official resources
_Because Plone also has a lot of good official info resources_
⟡ plone.org (https://plone.org/) - Official website for developers and community.
⟡ community.plone.org (https://community.plone.org/) - Official community forum, the best place to get help.
⟡ Discord chat (https://discord.gg/zFY3EBbjaj) - Discord is the best way to chat with members of the Plone community.
⟡ Plone support (https://plone.org/support) - Where to find help.
⟡ docs.plone.org (https://docs.plone.org/) - Official documentation for developers/integrators.
⟡ Plone 6 Documentation (https://6.dev-docs.plone.org/) - Official documentation for the upcoming Plone 6 (work on progress).
⟡ training.plone.org (https://training.plone.org/) - Training classes for developers/integrators/users/designers.
⟡ plone.api (https://6.dev-docs.plone.org/plone.api/index.html) - Documentation for plone.api.
Contributing
Contributions are welcome! Read the contribution guidelines (contributing.md).