Publii CMS Version 0.43.0: A Major Leap for Plugin Extensibility, User Functionality, and More
After diligent development, we're excited to announce the release of Publii CMS version 0.43. This update significantly enhances the scope for plugins. It introduces new functionalities for users-including a variety of features for website developers and, of course, a batch of bug fixes, improvements, and other updates.
To get your hands on the new update, download it now from the Publii site's Downloads section. And if you want the lowdown on what new stuff this release has in store, read on!
Repeater Field for Theme and Plugin Settings: A Game-Changer for Customization
Introducing the Repeater Field in this new Publii version significantly advances theme and plugin development. The Repeater Field allows for the dynamic addition of multiple instances of a particular set of fields within the Publii backend, offering a more granular level of customization.
What is a Repeater Field?
A Repeater Field is a container that can encapsulate multiple sets of fields, each with its values. It's like a loop in programming that can be controlled through the user interface. The Repeater Field is defined in the configuration JSON, similar to other field types, but has a nested `structure` array that specifies the fields it will contain.
Why is it Beneficial?
- Dynamic Collections and User Interface Flexibility: The Repeater Field provides a dynamic framework for creating and managing collections of fields. Users can effortlessly add, duplicate, or delete sets of related fields. The user interface also supports drag-and-drop capabilities, making it easy to reorder these dynamic collections.
- Context-Specific Rules: The Repeater Field facilitates the creation of context-sensitive rules. Users can define the scope of each rule, specifying where it will be applied, such as within specific HTML tags or on selected pages, excerpts, post titles, etc.
- Conditional Dependencies: Conditional dependencies can be set within the Repeater Field, enabling or disabling specific options based on the state of another field. This enhances the user interface's intuitiveness and makes it easier to navigate.
- Structured Data: Because each Repeater Field instance encapsulates a complete data set needed for a specific functionality, backend data handling and processing become significantly more efficient.
The utility of the Repeater Field is already being demonstrated through three new plugins now available on the marketplace:
- Advanced Head Tag Manager - This plugin enables you to customize metatags, including the 'generator' tag, which typically reads 'Publii Open-Source CMS for Static Site.' With this plugin, you can easily remove this tag with a single click.
- Smart Replacer - A powerful plugin that enables you to set predefined rules for text and regular expression replacements. Once configured, these rules are applied during the content generation process, allowing for consistent and automated updates according to your specified criteria.
- Security Txt - A robust solution designed to automate the generation of a security.txt file for websites powered by Publii CMS. With an intuitive user interface, the plugin allows site administrators to provide essential and optional information that will be included in the generated security.txt file.
Much of this might sound like needless jargon if you're unfamiliar with web development. Still, the Repeater Field is a transformative feature that substantially enhances the user interface and backend data management. Adding this function provides the base for significant improvements in Publii CMS's capabilities for customizing users' sites, making it an invaluable tool for developers and end-users. So, even if it's all gibberish to you, be assured that it can only improve the user experience.
Blocking new Crawlers: GPTBot, ChatGPT-User, and Common Crawl
As time goes on, more and more crawlers exist. As the name suggests, crawlers 'crawl' through your website, collecting the data they need for whatever function they have in mind. For example, search engines will crawl your site to provide accurate and relevant search results. In this case, the crawler benefits the site by displaying it in search rankings; however, a crawler is often much more selfish, providing no benefit to the site while taking advantage of its resources.
For example, AI bots such as ChatGPT need to crawl a massive amount of data to fine-tune their responses. Thus, controlling which web crawlers can index your site is crucial for many reasons, such as limiting their impact on your server resources and security or preventing your site's content from being disseminated across the web in AI responses.
The new update introduces features to block specific AI bots, offering more granular control over who can crawl your website:
- Block GPTBot - When enabled, this option prevents your site content from being indexed by GPTBot.
- Block ChatGPT-User - Similar to GPTBot, enabling this option will prevent the ChatGPT-User bot from indexing your site content.
- Block Common Crawl Bots - When enabled, this option prevents your site content from being indexed by Common Crawl bots.
New Way to Insert Code in WYSIWYG Editor
The WYSIWYG editor has been revamped to make inserting code snippets into your posts more efficient and user-friendly. A new popup triggered by a button with a round-bracket icon now facilitates this.
Not only does the popup provide a text field for pasting your code, but it also features a drop-down list. This list contains various programming languages supported by our Syntax Highlighter plugin, available for free in Publii marketplace.
Option to Disable Pagination Pages Rendering
In the Site Settings, specifically under the SEO section, a new option has been added to disable the rendering of pagination for both author and tag pages. This gives you more control over how search engines index your website.
The option to disable pagination on the main page was already previously implemented. The new feature extends this capability to other areas of your website.
By disabling pagination rendering, pages like page-2/
, page-3/
, etc., will not be generated. Additionally, no links to these pages will appear in the head of your website, making your site more streamlined and potentially improving SEO.
Developer-Focused Features
This update introduces a range of new functionalities designed explicitly for developers:
- New Operators in
{{#checkIf}}
: The operators 'contains', 'notContains', 'and', 'or', 'equal', 'strictEqual', 'different', 'strictDifferent', 'lesser', 'lesserEqual', 'greater', and 'greaterEqual' have been added. - New Helper
{{#notContains}}
: A new helper function for more advanced conditional logic. - GitLab Connection: An option to disable certificate validation during GitLab connection has been added, thanks to the contribution from @sc0ttes.
- Param
excluded_status
in{{#getPostsByTags}}
: This new parameter allows for more granular control over post-retrieval based on tags. - Support for Root Files in Plugin API: The
createFile/readFile
API now supports root files, expanding plugin development capabilities. - Modifiers for CustomHTML: This feature allows plugins to modify CustomHTML, providing additional customization options.
Note: The documentation for these new developer-focused features is being updated and will be available soon.
Improvements
This update also brings several enhancements aimed at improving performance and usability:
- Colorpicker Field: HSLA support has been improved.
- Backups: The
SITE_NAME-files
directory is now skipped to reduce the backup size. - Backups: Only the input directory is backed up to reduce the backup size further.
- Backups: Output and preview directories are not cleaned up during backup creation.
- SFTP Library: Upgraded to fix issues with specific server configurations.
- AWS S3: The list of regions has been updated.
- Dependencies: Electron and other dependencies have been upgraded.
- New Variable Fonts - Many new variable fonts have been added, including 'Roboto Flex' to the Simple theme.
Bug Fixes
This update also addresses several bugs to enhance stability and performance:
- Images in Editors: Fixed an issue with missing images from block/markdown editors in the sitemap.
- Gitlab Group Projects: Resolved handling issues with group projects in Gitlab, thanks to the contribution from @mtrimolet.
- FeedJsonOutput Modifier: Corrected an invalid modifier name, with thanks to @WishesofHue.
- Field Dependencies: Fixed issues with non-working field dependencies.
Hotfixes
Publii Hotfix 0.43.1
- New Social Sharing position in Custom HTML: It is prepared for the upcoming 'SocialSharing' plugin released this month.
- Updated Simple theme: This update supports the upcoming SocialSharing plugin.
- Global context for plugins (@plugins): Added an @plugins variable to the global context, which holds the state and configuration of all active plugins.
- Fixed dependencies between fields
- Fixed repeater field under theme settings
- Fixed excluded_status parameter in getPostsByTags helper
- Fixed image popup caption checkbox in WYSIWYG Editor
Wrapping Up
We trust this release brings valuable features that will benefit our user base. We invite you to participate in our community forums for further discussion, queries, or suggestions. Additionally, you can report bugs or contribute to Publii's GitHub repository. Keep an eye out for future updates.
Announcement: Publii v.0.44.0 Alpha is Now Available
We are excited to announce the release of Publii v.0.44.0 Alpha, featuring Git repository support. This alpha version is aimed at facilitating rigorous testing among our user community. Note: this is an alpha release, and we strongly recommend backing up all crucial files and websites before usage.