lukaskleinschmidt/kirby-resolve

Kirby Resolve

安装次数: 248

依赖: 0

推荐者: 1

安全: 0

星星: 28

关注者: 3

分支: 1

开放问题: 0

类型:kirby-plugin

1.0.2 2020-04-23 08:02 UTC

This package is auto-updated.

Last update: 2024-09-23 17:33:41 UTC


README

即使是大型内容结构或多语言网站,也能实现快速的页面路由。

商业用途

此插件是免费的。如果您在商业项目中使用它,请考虑捐赠

它是如何以及为什么工作的?

让我们想象以下内容结构。

.
├─ 📁 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

为了解决 photography/landscape,Kirby 需要索引 1_photography 目录下的所有子文件夹,以找到正确的文件夹 📁 1_photography/7_landscape。这对小型网站来说不是什么大问题,但随着您添加更多子页面,所需时间必然会不断增加。在多语言网站上,这会更糟,因为除了索引目录外,Kirby 还必须检查内容文件中存储的 slug。

此插件通过将请求路径映射到已解析的页面来缓存请求。通过从目录创建页面对象,我们可以跳过之前需要的所有索引。

{
    "photography/landscape": {
        "dir": "1_photography/7_landscape",
        "lang": "en",
    },
    "de/fotografie/landschaft": {
        "dir": "1_photography/7_landscape",
        "lang": "de",
    }
}

当然,性能提升取决于您的内容结构以及您是否有多个语言。

❕ This plugin only reduces the time needed to resolve the initial requested page

话虽如此,它不会加快您在模板中做的任何事情。因此,我强烈建议除了此插件外,还使用默认的 页面缓存 以获得最佳结果!

以下钩子将刷新缓存

  • page.changeNum:before
  • page.changeSlug:before
  • page.changeStatus:before

您还可以在您的配置中禁用此插件。

<?php

return [
    'lukaskleinschmidt.resolve.cache' => false,
];

注意事项

  • 它不适用于所有根页面。如果您想了解条件,请查看 isResolvable 函数。

安装

下载

下载并将此存储库复制到 /site/plugins/resolve

Git 子模块

git submodule add https://github.com/lukaskleinschmidt/kirby-resolve.git site/plugins/resolve

Composer

composer require lukaskleinschmidt/kirby-resolve

许可证

MIT

致谢