bvdputte / kirby-vpkit
多语言Kirby 3的虚拟页面助手套件
Requires
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
设置
- 在您的
config.php
中添加一个配置数组,包含以下键fetch
:一个闭包(函数),如下例返回一个数组。这将用于生成虚拟页面。parentUid
:虚拟页面将被放置的父页面的IDtemplate
:您希望用于虚拟页面的模板
- 为
template
创建一个 模型 并将children()
方法重用到site/models
以使用此插件的帮助器返回虚拟页面 - 创建一个与给定
template
-名称匹配的模板到site/templates
- 完成。现在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 中调用时,例如。 - 您无法使用面板来管理这些页面,因为它们在文件系统中不存在。