Upgrade Plone 6.0 to 6.1#
Plone 6.1 has seen the following major changes. Some may require changes in your setup.
Drop Python 3.8 and 3.9#
We only support Python 3.10, 3.11, 3.12, or 3.13.
TinyMCE upgraded in Classic UI#
In Plone 6.0, the Classic UI frontend uses TinyMCE 5, a rich text editor for websites. TinyMCE 5 reached its end of support on April 20, 2023. For Plone 6.1, Classic UI upgraded TinyMCE from version 5 to 7.
If you upgrade a site using Classic UI from Plone 6.0 to 6.1, you do not need to take any action, unless you implemented custom plugins, or you use a plugin which got removed or moved to premium in TinyMCE versions 6 or 7. To upgrade your plugin implementation to TinyMCE 7, see the upgrade guides.
Enable the TinyMCE accordion plugin#
Install the add-on
collective.outputfilters.tinymceaccordionto use an output filter that transforms the TinyMCE markup to valid HTML markup for the Bootstrap 5 accordion. Install via either pip or buildout.Install using pip.
pip install collective.outputfilters.tinymceaccordion
Configure your local buildout file.
[instance] eggs += collective.outputfilters.tinymceaccordion
Then run the command to install.
bin/buildout
Start your Plone instance.
bin/instance fg
Complete installation of the add-on by navigating to , then clicking Install for
collective.outputfilters.tinymceaccordion.Go to the control panel to manage TinyMCE settings.
Under the tab, if not already checked, check accordion to enable the accordion plugin.
Under the same tab, edit the
insertmenu by editing itsitemskey as shown.{ "insert": { "title": "Insert", "items": "link media | template hr | accordion" }, }
Click the Save button to save your settings.
In the control panel, ensure that you have the following tags under Valid tags.
buttondetailssummary
Also in the control panel, add a new attribute to Custom attributes, if not already present.
open
z3c.form and plone.app.z3cform#
plone.app.z3cform is the form widget integration package for z3c.form in Plone.
This adds Bootstrap 5 styling and mockup pattern options to all widgets.
In Plone 6.1 all Classic UI widget classes were moved to the module plone.app.z3cform.widgets.
The previous paths are marked as deprecated and will be removed in Plone 7.
The BaseWidget for patterns is refactored to the new z3c.form extendable attributes introduced in version 5.1 and doesn't use LXML anymore.
See zopefoundation/z3c.form#116.
If you have customizations in your base pattern widget class, see the new implementation at plone/plone.app.z3cform.
RelatedItemsWidget is marked as deprecated.
The implementation for selecting related items, internal links and images in TinyMCE, or internal paths for collection criteria is now done with the new ContentBrowserWidget.
This introduces a new pattern pat-contentbrowser from mockup.
See the next section for details.
mockup new pattern pat-contentbrowser#
A new content browsing pattern pat-contentbrowser for Classic UI is now available.
This is a Miller column browser implementation which replaces pat-relateditems seamlessly.
All basic options from pat-relateditems are implemented and behave the same as before.
Additionally pat-contentbrowser comes with some new features.
Keyboard navigation.
Multi-selection of items with Shift/Ctrl/CMD + click combination. This comes in handy for selecting multiple related items in one step.
Uploading items to the current path.
plone.app.multilingual is a core add-on#
plone.app.multilingual is the package that adds multilingual support to Plone, allowing the storage and display of content in multiple languages.
In Plone 6.0 and earlier, this was a dependency of Products.CMFPlone, making it available for installation in all Plone sites.
In Plone 6.1 it is now a dependency of the Plone package.
If your project or your add-on needs this package, and you only depend on Products.CMFPlone until now, you should add plone.app.multilingual as a dependency.
Then your project or add-on will keep working in both Plone 6.0 and 6.1.
The goal of turning more of the current core packages into core add-ons is to make the core smaller, and in some cases solve circular dependencies.
Discussion is a core add-on#
Discussion is a feature that allows your site visitors to comment on web pages for any content object.
The code behind this is in the plone.app.discussion package.
In Plone 6.0 and earlier, this was a dependency of Products.CMFPlone, making it available for installation in all Plone sites.
In Plone 6.1 it's a dependency of the Plone package.
Discussion is disabled by default in Plone 6.1 and later. To enable discussion, you need to perform the following tasks.
In your Python
requirements.txtorpyproject.tomlfile, add the core add-onplone.app.discussionto your dependencies.Run pip to install
plone.app.discussion.Restart the Plone backend to load
plone.app.discussion.Enable the Discussion Support add-on in the Add-ons control panel under .
If you use Plone Classic UI, you can then use the Discussion control panel to further configure this feature, for example, to enable comment moderation.
🍻
If you have an existing Plone 5.2 or 6.0 site and you migrate to 6.1, then migration code handles the change as follows.
If the
plone.app.discussionPython package is in your setup, the migration does nothing. Existing discussion configuration and comments remain unchanged.If the
plone.app.discussionPython package is not in your setup, and the site has no existing comments (discussions), then the migration code removes the Discussion configuration from your site. Apparently you were not using comments in your site, so the configuration is no longer needed.If the
plone.app.discussionPython package is not in your setup, but the site has existing comments (discussions), then the migration code stops with an error. Apparently you were using comments in your site. Add theplone.app.discussionpackage to your dependencies, and run the migration again.
Distributions#
Plone 6.1 introduces the concept of a Plone distribution. A Plone distribution is a Python package that defines specific features, themes, add-ons, and configurations that get activated when creating a Plone site. Now it is available in core Plone as the recommended way for creating a new Plone site.
See also
For more information about distribution concepts, see Plone distributions.
Distributions are optional.
If your project only uses the Products.CMFPlone Python package, you can still create a Plone site in the old way.
Consider, however, that doing so you will have the following differences when compared to using distributions.
The configuration form is simpler and shorter.
The created site has no content, and therefore no News or Events folders.
You must activate add-ons through the Add-ons control panel.
There are a few things you should consider when upgrading a project to, or making an add-on compatible with, Plone 6.1.
In general, you don't need to change anything. Your existing site will keep working. But adding a new site may change in the ways described earlier.
Do you want to use the
Products.CMFPlonepackage (no distributions), eitherplone.voltoorplone.classicui(one distribution), orPlone(two distributions)?If your site uses Volto for the frontend, you will already have
plone.voltoas a dependency. This can stay the same.If your site depends on the
Products.CMFPlonepackage without thePloneorplone.voltopackages, then the frontend is Classic UI. This can stay the same, but you may want to depend onplone.classicui. With that package you can still create a new site and have the same content as before.If your site uses the
Plonepackage, you will have the two new distributions available. This is fine. If you know you only needplone.voltoor only needplone.classicui, you can switch to only one or the other. You can also limit the options for selecting a distribution by setting the environment variableALLOWED_DISTRIBUTIONSwith fewer options. SetALLOWED_DISTRIBUTIONS=defaultfor the distribution targeting the Volto frontend (plone.volto). SetALLOWED_DISTRIBUTIONS=classicfor the distribution with the Classic UI frontend (plone.classicui).If you switch from
Plonetoplone.voltoorplone.classicui, you might want to install extra core add-ons, for exampleplone.app.upgradeorplone.app.caching.If your add-on is only for Volto, you might want to add
plone.voltoas a dependency.If your add-on is only for Classic UI, you might want to add
plone.classicuias a dependency. Note though thatplone.classicuiis not available for Plone 6.0.