Kirby 2.3.1

This release contains bug fixes and improvements for Kirby 2.3.0.
It is strongly recommended to upgrade to Kirby 2.3.1.


  • Global field definitions (field snippets) can now be registered by plugins:
// The blueprint file must exist at the given location
$kirby->set('blueprint', 'fields/title', __DIR__ . '/blueprints/fields/title.yml');
  • "Page settings" headline in the sidebar is now hidden if all options are disabled
  • Respect disabled option for datetime fields
  • Ignore invalid fields in site/fields again instead of throwing an error (introduced in 2.3.0)
  • The Panel URL is now detected more reliably if the custom folder setup is used
  • Fix "Call to a member function direction() on null" error
  • Improve wording of the installer error for non-localhost environments


  • Structure objects can now be shuffled
  • $page->is*() methods now accept an URI string
  • Fix a bug where multiple hooks with the same name would cause an error when triggered
  • Fix $field->pages() method
  • $pages->find([]) with an empty array no longer causes an error
  • Fallback for $page->tinyurl() if the tinyurl component is not loaded
  • Reset template data after the template has been rendered
  • Fix a bug where a controller could only be used once per page load
  • Redirection to the homepage (/home to /) now works with custom homepages set using c::set('home')
  • Fix a bug where the order of calling the kirby()->urls() methods would matter


  • More robust $collection->shuffle() method
  • Fix database query resetting so that a query object can now be used for multiple queries again (introduced in 2.3.0)
  • Improve extensibility of the Sql class with custom database drivers
  • The str::ascii() representation of the character ö can now be overwritten

Our partners

CDN by KeyCDN Search by Algolia