omz13 / kirby3-honehome
kirby3 插件用于处理主页重定向
Requires
- php: >=7.1
- getkirby/composer-installer: ^1.1
Requires (Dev)
- getkirby/cms: ^3.0.1
- jakub-onderka/php-parallel-lint: ^1.0
- localheinz/composer-normalize: ^0.8.0
- omz13/omz13-coding-standard: dev-master
- phpmd/phpmd: ^2.6
- phpstan/phpstan: ^0.11
- phpstan/phpstan-strict-rules: ^0.11
- squizlabs/php_codesniffer: ^3.4
README
咖啡,啤酒等。
这个插件是为了满足我的一个需求而开发的。我想让一个多语言网站根据客户端的 Accept-Language
标头切换到最佳匹配的语言,而不是默认语言。实现起来比我想的要复杂,有些边缘情况很棘手,但在重构后变得相当优雅。HTML 和 HTTP 中语言格式的细微差异正是使开发更加困难的原因(如果你查看代码,那也是为什么到处都是横线和下划线之间的曲折替换)。同样,utf8
后缀也是一个需要解决的问题。
一点小趣闻。当我开始开发这个插件时,它被称为 HomeHome(因为它使主页变得更好)。然后有一天我犯了一个拼写错误,称其为 HoneHome。但“hone”这个词很棒,因为这个插件真的“打磨”了主页。所以它变成了 HoneHome。
这个插件是免费的,但如果你在商业项目中使用它来表示支持,欢迎
文档
用途
对于一个 kirby3 网站,此插件 omz13/honehome 对网站的主页做了神奇的事情。
你会在什么情况下使用这个插件?
- 你正在运行一个多语言网站,并且你想
- 主页(默认或替换)自动切换到浏览器
Accept-Language
标头设置的语言。这真的很酷。 - 页面具有正确的
lang
属性(因为它包含一个辅助函数来完成这项工作)。
- 主页(默认或替换)自动切换到浏览器
- 你想用不同的页面替换主页(例如,对于一个基于博客的网站,你会将其设置为博客文章的父页面)。
功能规范
- 在多语言安装中,主页根据客户端的
Accept-Langauge
请求的最佳匹配返回本地化主页。 - 提供一个页面方法 (
honehomeLang
) 来设置 HTML 的lang
属性(这对于多语言安装来说是一件非常好的事情)。 - 网站的主页可以设置为配置文件(
site/content/content.php
)或面板内容字段(通过site/blueprints/site.yml
的content/site.txt
)中指定的页面。
路线图
计划的功能和非绑定实现说明列表如下
- MVP
- 仅调试模式中显示调试头
- 将 stan 升级到 7 级
安装
根据您的认识论模型选择以下选项之一
composer require omz13/kirby3-honehome
;插件将自动出现在site/plugins
中。- 下载最新版本的 zip 文件 - master.zip - 并将内容复制到您的
site/plugins/kirby3-honehome
中。 git submodule add https://github.com/omz13/kirby3-honehome.git site/plugins/kirby3-honehome
.
配置
以下机制可以用来修改插件的行为和您的 kirby 网站。
site/snippets/header.php
如果您正在运行多语言系统中的 kirby,为了多语言能够良好工作,您需要页面来指示它们使用哪种语言。此插件包含一个页面方法 - honehomeLang( string $default = 'en' ) : string
- 用于返回正确的格式,以便用作 <html>
元素 lang
属性。
TL;DR:更改您的 site/snippets/header.php
以设置打开的 <html>
的 lang
属性
<html lang="<?= $page->honehomeLang('en') ?>">
通过 site/config/config.php
-
omz13.honehome.disable
- 可选 - 默认false
- 一个布尔值,如果为true
,则禁用插件(除了honehomeLang
页面方法。 -
omz13.honehome.homelanding
- 可选 - 一个字符串,表示用于主页的页面名称。此设置优先于在 c.f.homelanding
内容字段中指定的设置。
content/site.txt
中的内容字段(通过蓝图 site/blueprints/site.yml
)
插件使用以下内容字段。这些都是可选的;如果不存在或为空,则假定它们不适用于其指示的功能。
homelanding
- 文本 - 可选 - 当主页被不同的落地页面替换时使用的页面名称。此设置从属于config.php
中的omz13.honehome.homelanding
。
蓝图
以下是一个示例片段,您可以在 site/blueprints/site.yml
中使用它,以便将主页更改为根目录中的任何可见子项。显然,您会想要更灵活,例如通过筛选模板,但这提供了一个思路。
fields: homelanding: label: en: Home Override de: Überschreiben Sie die Homepage mit fr: Ignorer la page d'accueil avec nl: Negeer Homepage met sv: Åsidosätt hemsida med type: select options: query query: site.children.visible width: 1/3
使用
-
按照上述说明进行安装和配置。
-
使用网页浏览器或任何其他方式访问主页。
-
如果它正常工作,请参阅上面的 咖啡、啤酒等。
-
如果它不起作用...提交一个问题。
调试模式
如果 kirby 网站处于调试模式
- 对主页的页面请求将包含包含调试信息的头部
X-omz13-hh-...
。是的,它输出了很多调试信息,但它确实有助于找到我的代码是垃圾的地方。
免责声明
本插件提供“原样”使用,不提供任何保证。请自行承担使用风险,并在生产环境中使用前自行测试。如果您发现任何问题,请创建一个新问题。