bvdputte/kirby-vpkit

多语言Kirby 3的虚拟页面助手套件

安装: 10

依赖项: 0

建议者: 0

安全: 0

星标: 9

关注者: 4

分支: 0

开放性问题: 0

类型:kirby-plugin

1.1.1 2022-09-20 11:53 UTC

This package is auto-updated.

Last update: 2024-09-26 16:02:17 UTC


README

一个有偏见的样板助手,使在多语言Kirby 3环境中处理虚拟页面变得更加容易。虚拟页面

默认情况下,多语言Kirby环境中的虚拟页面需要一些额外的、重复的工作。此插件试图保持DRY原则,并且还处理了一些其他优点,例如缓存以避免对后端进行过度打击。

安装

  • 解压缩 master.zip 为文件夹 site/plugins/kirby-vpkit
  • git submodule add https://github.com/bvdputte/kirby-vpkit.git site/plugins/kirby-vpkit
  • composer require bvdputte/kirby-vpkit

设置

  1. 在您的 config.php 中添加一个配置数组,包含以下键
    1. fetch:一个闭包(函数),如下例返回一个数组。这将用于生成虚拟页面。
    2. parentUid:虚拟页面将被放置的父页面的ID
    3. template:您希望用于虚拟页面的模板
  2. template 创建一个 模型 并将 children() 方法重用到 site/models 以使用此插件的帮助器返回虚拟页面
  3. 创建一个与给定 template-名称匹配的模板到 site/templates
  4. 完成。现在Kirby应该会将您添加的虚拟页面作为常规页面使用。

此插件期望一个配置,返回以下形式的数据以将其转换为“虚拟Kirby页面”,例如。

$virtualPages = [
    "en" => [
        [
            "id" => "some-uuid", // Will be used to figure out which translations belong to eachother
            "slug" => "slug-in-english",
            "content" => [
                "title" => "Title is required",
                "somefield" => "Other fields are added like this"
            ]
        ]
    ],
    "nl" => [
        [
            "id" => "some-uuid", // Will be used to figure out which translations belong to eachother
            "slug" => "slug-in-nederlands",
            "content" => [
                "title" => "Titel is verplicht",
                "somefield" => "Andere velden kunnen zo toegevoegd worden."
            ]
        ]
    ]
];

请查看此存储库中包含的 demo 文件夹中的示例。

缓存

默认

默认情况下,每个获取都会进行缓存。这是为了避免从端点获取数据时出现延迟。
如果您不想这样做,您可以通过在 config.php 中设置 'bvdputte.kirby-vpkit.cache' => false 来选择退出。

默认情况下,每个获取都会缓存1分钟。
您可以通过在 config.php 中设置 'bvdputte.kirby-vpkit.cache.timeout' => 60 来更改此(值以分钟为单位)。

后端关闭时重新缓存

当启用缓存且您的后端关闭时,此插件还将继续提供服务已缓存的已缓存数据,而不是出错。您可以通过在 config.php 中设置 'bvdputte.kirby-vpkit.recache-on-fail' => false 来选择退出此行为。
此缓存的超时默认为1分钟,但可以通过选项设置:在 config.php 中设置 'bvdputte.kirby-vpkit.recache-on-fail.timeout' => 30(值也是以分钟为单位)。

在这种情况下,如果已安装 kirby-log插件,则失败的尝试将被记录。

与页面缓存结合使用

如果您想结合使用此插件和页面缓存,您需要一个策略来使重新实例化的缓存无效;这里的常见策略是使用cron作业中的工作者。此存储库还包括一个示例工作者。或者,您可以将虚拟页面从页面缓存中排除。

注意事项

  • 默认语言;导入的内容必须在Kirby的默认语言中“至少存在”。
  • 当使用工作进程刷新缓存时;您必须在 config.php 中设置一个 url 键。由于使用了缓存,并且缓存绑定到 URL,我们必须显式地添加它,以便工作进程能够找到它。特别是当这个工作进程通过 CLI 在 cronjob 中调用时,例如。
  • 您无法使用面板来管理这些页面,因为它们在文件系统中不存在。