🌱 The next big step: Kirby 4 Beta Learn more
Skip to content

Dev tools

Debugging

Plugin development

Logging

Utilities

// hook
'page.product.update:after' => function () {
    // your code goes here
}

Template hooks

by Ahmet Bora

Template hooks allow you to manage hooks for page and file templates more easily.
plop blueprint $ pages blogpost
plop template $ blogpost
plop content "Nice!" blog blogpost
plop content _ blog blogpost
plop snippet $ slideshow

Plopfile

by Bruno Meilick

CLI tool to generate and append to various files for Kirby3 CMS using Plop.js
$queue = kqQueue('queuename');
$job   = kqJob([
    'foo' => 'foo',
    'bar' => 'bar'
]);

$queue->addJob($job);

Queue

by Bart Vandeputte

Enable workers in Kirby that can do tasks in the background at scheduled intervals (cron) by working through queues of jobs
'en' => [
    [
        'id'      => 'some-uuid',
        'slug'    => 'slug-in-english',
        'content' => [...]
    ]
]

Virtual pages helper kit

by Bart Vandeputte

Opinionated boilerplate helper to make it easier to work with virtual pages in a multilingual kirby 3 setup.
user@host:~/project$ kirby types:create
kirby-types v1.1.0 types:create
βœ“ added blueprints fields
βœ“ added custom methods
βœ“ added decorators
βœ“ added aliases
types helper created successfully

Types

by Lukas Kleinschmidt

IDE Helper for Kirby. Adds the kirby types:create command to your project to create an additional type hints file.

MarkdownPlus

by Dieter Stokar

A small set of syntax extensions greatly expand expressiveness of Markdown. Helps where you'd need complex templates. See dedicated Doc …
// site/routes/my-awesome-route.php
use PresProg\RouteAttributes\Attributes\Get;

return #[Get('/hello')] function () {
    return '<h1>Hello world!</h1>';
};

Route Attributes

by Present Progressive

Use PHP8 attributes to define metadata for your custom routes in separate files.
class MigrationTest extends Migration
{
    public function up()
    {
        $result = Db::query(
            'ALTER TABLE `my_table`
            ADD COLUMN `test` INT DEFAULT NULL;
        ');

        if (!$result) throw Db::lastError();
    }
}

Migrations

by Markus Denhoff

Migrations management (eg. for Databases)

Contentsync

by Zephir Software Design AG

Tired of manual and cumbersome methods like git push/pull, scp, rsync or sftp to synchronize content between your server and local …