🚀 A new era: Kirby 4 Get to know
Skip to content

Lapse

$keyFromObjects = [$page, $page->files()];
$data = lapse(
    $keyFromObjects, // will check modified
    function () use ($page) {
        return $page->files()->toArray(
          fn ($file) => $file->niceSize()
        );
    }
); // expires when any timestamp changes

Cache any data until the set expiration time

Related plugins

Other plugins by Bruno Meilick

Kirby::plugin('bnomei/example', [
    'blueprints' => autoloader(__DIR__)
                      ->blueprints(),
    'snippets' => autoloader(__DIR__)
                      ->snippets(),
    // other extensions
]);

Autoloader

by Bruno Meilick

Helper to automatically load various Kirby extensions in a plugin
  • K3
  • K4
return Field::make(FieldTypes::TEXT)
    ->label('Description')
    ->toArray();

PHP Class-based Blueprints

by Bruno Meilick

PHP Class-based Blueprints for better type safety and code completion
'bnomei.boost.cache' => [
    'type'     => 'apcu',
],
'cache' => [
    'uuid' => [
        'type' => 'apcu',
    ],
],

Boost

by Bruno Meilick

Boost the speed of Kirby by having content files of pages cached and a fast lookup based on uuids
  • K3
  • K4

CloudConvert

by Bruno Meilick

Plugin to convert your files to other file types (i.e. mov to animated gif), using cloudconvert.com
  • K3
  • K4
$mostPopularPage = $kirbyCollection
    ->sortBy('viewcount')->last()
    ->viewcount()->toInt();

// with collect plugin
$mostPopularPage = $kirbyCollection
    ->collect()->max('content.viewcount');

Collect

by Bruno Meilick

Adds support for Laravel collections to Kirby
  • K3
  • K4
return [
    'bnomei.securityheaders.headers' => [
        'X-Frame-Options'        => 'SAMEORIGIN',
        'X-XSS-Protection'       => '1; mode=block',
        'X-Content-Type-Options' => 'nosniff',
        ...
    ]
];

Content Security Policy

by Bruno Meilick

Simplify the content security policy headers setup for your website
  • K3
  • K4
env('APP_DEBUG');

DotEnv

by Bruno Meilick

Store project credentials and environment variables in a .env file and access them in Kirby
  • K3
  • K4
page('blog')->children()->feed([
    'title'       => 'Latest articles',
    'link'        => 'blog'
]);

Feed and Sitemap

by Bruno Meilick

Generate a RSS or JSON-Feed or XML-Sitemap from a collection of pages
  • K3
  • K4
<?= $page->thumbsUp()->ecco('👍', '👎') ?>

Field Ecco

by Bruno Meilick

Field method to echo strings based on the boolean value of a field
  • K3
  • K4
$page->file('ukulele.pdf')->fingerprint();

Fingerprint

by Bruno Meilick

File method and css/js helpers to add hashes to assets and files
  • K3
  • K4

Fontselector

by Bruno Meilick

Select font family and font weight with two synced fields
  • K3
  • K4
<article id="{{ page.slug }}">
  <h2>{{ page.title }}</h2>
  {{ page.text }}
</article>

Handlebars Templates

by Bruno Meilick

Component, snippet and page method for semantic templates with Handlebars and Mustache
  • K3
  • K4
<html <?= $site->langAttr() ?>>
  <head>
    <meta charset="utf-8">
    <?= $page->htmlhead() ?>
  </head>
  ...

HTMLHead

by Bruno Meilick

Add a best-practice HTML head element to your templates, extendable with snippets
  • K3
  • K4
<?= $page->myfield()->htmlPurify() ?>

HTML Purifier

by Bruno Meilick

Static class method, Uniform-Guard and Field-Method to filter your "dirty" HTML inputs to "clean" HTML.
  • K3
  • K4

Janitor

by Bruno Meilick

Run command – like cleaning the cache – from within the Panel via a customizable button, directly in PHP code or with a cronjob
  • K3
  • K4

Klub

by Bruno Meilick · Paid

With Kirby Klub your customers will become members of your website. It is a flexible toolkit that allows you to add member-exclusive …
  • K4

Mailjet

by Bruno Meilick

Send transactional SMS, transactional E-Mail and Campaigns with Mailjet
  • K3
  • K4
<?php if ($page->isMobile()): ?>
  Nice mobile phone!
<?php endif ?>

Mobile Detect

by Bruno Meilick

Static class and page methods for using the mobile detect lib
  • K3
  • K4
monolog()->info('test-' . time()), [
    'title' => $page->title(),
    'page'  => $page->id()
]);

Monolog

by Bruno Meilick

Use Monolog to log data to files, databases, notifications and more.
  • K3
  • K4

MySQL Cache Driver

by Bruno Meilick

MySQL based Cache-Driver
  • K3
  • K4
<?= $page->counterImage() ?>

Pageview Counter

by Bruno Meilick

Track Page view count and last visited timestamp
  • K3

PHP Cache Driver

by Bruno Meilick

PHP based Cache-Driver
  • K3
  • K4
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
  • K3
  • K4

Posthog

by Bruno Meilick

Connect Kirby to Posthog via PHP or Javascript
  • K3
  • K4

Postmark

by Bruno Meilick

Send transactional E-Mail with Postmark
  • K3
  • K4
fields:
  # current page
  qrcode: qrcode

QR Code

by Bruno Meilick

Generate QRCodes. The included Panel field will show the QRCode and trigger download on click.
  • K3
  • K4
<?= $page->random('words', 'lorem', 5) ?>

Random

by Bruno Meilick

Kirby tag and page method to generate various random values
  • K3
  • K4

Recently Modified

by Bruno Meilick

Kirby 3 Plugin to view recently modified pages by current User (or other collections)
  • K3
  • K4
sections:
  redirects:
    extends: plugin-redirects3xx

Redirects

by Bruno Meilick

Setup HTTP status code redirects from within the Panel
  • K3
  • K4

Redis Cache Driver

by Bruno Meilick

Redis based Cache-Driver
  • K3
  • K4
return [
    'bnomei.robots-txt' => [
        'content' => '...'
    ]
];

Robots.txt

by Bruno Meilick

Manage the robots.txt from Kirby's config file
  • K3
  • K4

Seobility – Keyword check

by Bruno Meilick

Plugin to use the free and paid API of Seobility.net like the keyword check
  • K3
  • K4

SQLite Cache Driver

by Bruno Meilick

SQLite based Cache-Driver
  • K3
  • K4
site()->stopwatch()->start('myevent');
// some code to profile
site()->stopwatch()->stop('myevent');

echo site()->stopwatch()->duration('myevent');

Stopwatch

by Bruno Meilick

Profile your Kirby 3 CMS code with precision in milliseconds (or seconds).
  • K3
  • K4

Storybook

by Bruno Meilick

Generate Storybook stories from snippets and templates
  • K3
  • K4

UTM Tracking

by Bruno Meilick

Automatically track events from URLs with UTM parameters and view statistics about them right in the panel.
  • K3