Skip to content

Collections

It often happens that we need the same set of pages or files in multiple places across our site. Think of blog articles on the blog and on the home page for example. Collections help with not repeating ourselves in such cases and to access commonly used pages or files collections more easily.

Collection setup

A list of pages

/site/collections/articles.php
return function ($site) {
    return $site->find('blog')->children()->listed()->flip();
};

A list of users

/site/collections/admins.php
return function ($users) {
    return $users->filterBy('role', 'admin');
};

A list of images/files

/site/collections/project-covers.php
return function ($site) {
    return $site
        ->find('projects')
        ->children()
        ->images()
        ->template('cover');
};

How to use collections

Collections can be used in templates and snippets like this:

$kirby->collection("articles");
$kirby->collection("admins");
$kirby->collection("project-covers");

Best practices

It's always a good idea to provide a collection that is not too specific yet. In general, it's better not to apply pagination to collections for example, or to set a limit. You might want to use the same set of pages in different places, but in one template you need three and in the next you need 10.