Fast page routing even for large content structures or multi language sites.
This plugin is free. Please consider to make a donation if you use it in a commercial project.
Lets imagine the following content structure.
.
ββ π 1_photography
β ββ π 1_sky
β ββ π 2_ocean
β ββ π 3_desert
β ββ π 4_mountains
β ββ π 5_waterfall
β ββ π 6_plants
β ββ π 7_landscape
β ββ π album.de.txt # Slug: landschaft
β ββ π album.en.txt
ββ π 2_about
ββ π 3_contact
ββ π error
ββ π home
To be able to resolve photography/landscape
Kirby needs to index all subfolders in the 1_photography
directory to find the correct folder π 1_photography/7_landscape
. This is not a big deal for small sites but the time needed will inevitably increase over time as you add more subpages. This gets worse on multi language websites because, in addition to indexing directories, Kirby also has to check the slugs stored in the content files.
This plugin caches the request by mapping the requested path to the resolved page. By creating the page object from a directory we can skip all the previously needed indexing.
{
"photography/landscape": {
"dir": "1_photography/7_landscape",
"lang": "en",
},
"de/fotografie/landschaft": {
"dir": "1_photography/7_landscape",
"lang": "de",
}
}
Of course the performance gain depends on your content structure and if you have multiple languages or not.
β This plugin only reduces the time needed to resolve the initial requested page
That said, it won't speed up anything you do in your templates. So I highly recommend using the default pages cache in addition to this plugin to get the best results!
Following hooks will flush the cache:
page.changeNum:before
page.changeSlug:before
page.changeStatus:before
You can also disable the plugin in your config.
<?php
return [
'lukaskleinschmidt.resolve.cache' => false,
];
- It does not work for all root pages. Have a look at the
isResolvable
function if you want to know the conditions.
Download and copy this repository to /site/plugins/resolve
.
git submodule add https://github.com/lukaskleinschmidt/kirby-resolve.git site/plugins/resolve
composer require lukaskleinschmidt/kirby-resolve
MIT