bnomei / kirby-content-last-modified
Kirby plugin to track the last timestamp when any content was modified at in the full content folder.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 0
Open Issues: 0
Type:kirby-plugin
Requires
- php: >=8.2
- getkirby/composer-installer: ^1.2
Requires (Dev)
- getkirby/cms: ^4.4.0
- laravel/pint: ^1.13
- pestphp/pest: ^2.24
- spatie/ray: ^1.39
README
Kirby plugin to track the last timestamp when any content was modified at in the full content folder.
Installation
- unzip master.zip as folder
site/plugins/kirby-content-last-modified
or git submodule add https://github.com/bnomei/kirby-content-last-modified.git site/plugins/kirby-content-last-modified
orcomposer require bnomei/kirby-content-last-modified
Usage
When you install this plugin it will create a file in the content
folder of your Kirby installation. If any content (site, pages, files) in the content
folder changes, this file will store the timestamp when the modification occurred. This might be useful to invalidate caches or trigger other actions.
Output the last modified timestamp
<?= site()->contentLastModified()->toDate('c') ?>
Flush a cache if the content was modified after a given timestamp
<?php // http://example.com/some-page?last-modified=1726822135 if (site()->contentLastModified()->toInt() > intval(get('last-modified'))) { kirby()->cache('my-cache')->flush(); }
Invalidate individual cache values based on the last modified timestamp
<?php $lastModifiedTimestamp = site()->contentLastModified()->toInt(); /* @var $cache \Kirby\Cache\Cache */ $cache = kirby()->cache('your-cache-name'); /* @var $rawValue \Kirby\Cache\Value */ $rawValue = $cache->retrieve('some-cache-key'); if ($rawValue && $rawValue->created() < $lastModifiedTimestamp) { $cache->remove('some-cache-key'); } // or with the helper site()->removeFromCacheIfCreatedIsAfterModified('your-cache-name', 'some-cache-key', $lastModifiedTimestamp); // defaults to site()->contentLastModified()->toInt() site()->removeFromCacheIfCreatedIsAfterModified('your-cache-name', 'some-cache-key');
Performance
The core method site()->modified()
will give you the same timestamp but it will crawl all content files, which might not be the most performant thing to do depending on how much content you have.
Settings
Disclaimer
This plugin is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you find any issues, please create a new issue.
License
It is discouraged to use this plugin in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.