đź‘€ Get a glimpse of Kirby 5 Learn more
Skip to content

And so much more

Site controller

The site controller data will now always be merged as default data with data from page template specific controllers. https://feedback.getkirby.com/422

site/controller/site.php
return function () {
    return [
        'brand' => 'Kirby'
    ];
};
site/controller/campaign.php
return function () {
    return [
        'testimonial' => 'Max'
    ];
};
site/template/campaign.php
Both are available:

<?= $brand ?>: <?= $testimonial ?>

First day of the week

first day of the week is chosen based on user language or date.weekday config option (0 for Sunday … 6 for Saturday):

site/config/config.php
return [
    'date' => [
        'weekday' => 0
    ]
];

Redis Cache Driver

Redis is one of the most used cache types. We’ve added a brand new Redis cache driver to the core. You can now use it out of the box by setting up the Redis server connection in your config. #6736

<?php

return [
    'cache' => [
        'pages' => [
            'active' => true,
            'type'   => 'redis',
            'host'   => '127.0.0.1', // default host address
            'port'   => 6379, // default port number
            'auth'   => ['user', 'password'], // optional
        ]
    ]
];

Improved UUID handling

When duplicating a page, all UUIDs within the copied page, its files and children that point to an object that got copied as - well will be replaced with the UUID of the copied version.

If not copying files, any UUID pointing to a file within the copied page gets removed. #6567

Improved IDE support

Improved IDE autocompletion and type hints for collection items ($pages, $files, $users...) #6391:

site/templates/blog.php
<?php
/**
 * @var Kirby\Cms\App $kirby
 * @var Kirby\Cms\Site $site
 * @var Kirby\Cms\Page $page
 */
?>

<ul>
  <?php foreach ($page->children() as $child): ?>
    <?php
    // your IDE now understands that $child
    // is a `Kirby\Cms\Page` object
    ?>
  <?php endforeach ?>
</ul>

Improved Panel input validation

The Panel now relies on native HTML form invalid states for its input valiation #6099 #6320

  • Choice input: unselected choices get disabled when max is reached #6343
  • Added <k-input-validator> helper element to provide native form validation for complex/group inputs and fields #6321
  • Removed Vuelidate third-party library