Collections are registered with the collections extension.

Callback definition

The collections extension accepts an array of collections where the key is the name of the collection and the value a callback function that returns the collection.

Kirby::plugin('your/plugin', [
  'collections' => [
    'projects' => function ($site) {
      return $site->find('projects')->children()->listed();

File definition

Alternatively, you can require a file. The required file would be a collection with a return function.

Kirby::plugin('your/plugin', [
  'collections' => [
    'articles' => require 'some/file.php'

Usage in templates

Once defined, you can use the collection in your templates using the collection() helper.

<?php foreach (collection('articles') as $article) : ?>
  Author: <?= $article->author() ?>
<?php endforeach ?>