omz13/ kirby3-htmlsitemap
kirby3 插件,用于生成基于 html 的(面向用户的)网站地图
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: ^1.0.0
- omz13/omz13-coding-standard: dev-master
- phpcompatibility/php-compatibility: ^8.2
- phpmd/phpmd: ^2.6
- phpstan/phpstan: ^0.10.3
- phpstan/phpstan-strict-rules: ^0.10.1
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2022-12-18 02:05:49 UTC
README
需求: Kirby 3
文档
用途
对于 kirby3 网站,此插件(omz13/htmlsitemap)在 '/sitemap' 生成一个面向用户的基于 html 的网站地图。
- 生成一个基于 html 的结构化无序列表(
<ul>
)。 - 可以根据以下标准排除页面或其子页面,并按照以下优先级进行
- 首页始终包含在内。
- 错误页面始终排除;谁想看到错误页面?
- 只有状态为 "已发布" 的页面才包含在内,即具有 "草案" 或 "未发布" 的页面被排除。
- 可以根据其 slugname 明确包含未发布的页面;请参阅 配置 中的
includeUnlistedWhenSlugIs
。 - 可以使用某些模板创建的页面可以排除;请参阅 配置 中的
excludePageWhenTemplateIs
。 - 具有特定 slugname 的页面可以排除;请参阅 配置 中的
excludePageWhenSlugIs
。 - 具有内容字段
excludefromhtmlsitemap
且值为true
的页面被排除。 - 具有返回
true
的方法issunset
的页面被排除。 - 具有返回
true
的方法isunderembargo
的页面被排除。 - 使用某些模板创建的页面的子页面可以排除;请参阅 配置 中的
excludeChildrenWhenTemplateIs
。 - 使用某些模板创建的页面的子页面可以作为锚点链接到其父页面;请参阅 配置 中的
linkyChildrenWhenTemplateIs
。
- 出于调试目的,生成的 html 网站地图可以包含额外的信息作为 html 注释;请参阅 配置 中的
debugqueryvalue
。
在当前的试验性项目中,网站地图以简单的无序列表的形式呈现:预计将来将通过 css 转换为更美观的形式。
相关
有关面向计算机的 xml 基于的网站地图,请参阅 omz13/kirby3-xmlsitemap。
有关提供方法 issunset
和 isunderembargo
的插件,请参阅 omz13/kirby3-suncyclepages。
注意
Kirby3 正处于测试阶段,因此此插件以及 kirby3 本身可能或可能不会很好地协同工作,或者甚至可能无法正常工作:仅用于测试目的;如果在生产环境中使用,则应了解风险并了解您正在做什么。
路线图
对于 1.0,计划功能和实现说明的非约束性列表如下
- MVP
- 调试选项
- 尊重页面状态
- 允许包含特定的未列出页面,请参阅
includeUnlistedWhenSlugIs
- 通过模板排除页面 - 请参阅
excludePageWhenTemplateIs
- 排除单个页面 - 请参阅
excludePageWhenSlugIs
- 排除受禁页面
- 排除即将停用的页面
- 支持单页,参考
excludeChildrenWhenTemplateIs
和linkyChildrenWhenTemplateIs
- 如果网站在 '/sitemap' 有内容,请不要劫持
- 提供标签/代码片段以包含 HTML 网站地图
- 允许配置网站地图的
<div>
和class
属性。 - 考虑使用 slickmap 进行样式设计
- 考虑使用 纯 CSS 树形菜单 进行样式设计
- 考虑使用 CSS 创建带有连接线的简单树结构 进行样式设计
- 考虑使用 嵌套文件夹 进行样式设计
- 缓存(防止拒绝服务攻击)
- 自动化 GitHub 发布 - gothub?github-release-notes?
安装
根据您的知识模型选择以下之一
composer require --no-dev omz13/kirby3-htmlsitemap
;插件将自动出现在site/plugins
。- 下载最新版本的 zip 文件 - master.zip - 并将其内容复制到您的
site/plugins/kirby3-htmlsitemap
。 git submodule add https://github.com/omz13/kirby3-htmlsitemap.git site/plugins/kirby3-htmlsitemap
.
记录在案:通过 composer 安装很酷;支持 zip 和子模块安装确实很痛苦,尤其是作为通过 composer 安装的人,所以请感到愧疚地给我咖啡、啤酒等,因为这都是为了 您的利益,而不是我的(而且,我确实更喜欢花时间在温暖阳光明媚的地方,而不是在键盘前弯腰,外面在下雪,温度计显示没有超过 0°C 的倾向)。
配置
可以使用以下机制来修改插件的行为。
通过 config.php
在您的站点的 site/config/config.php
中,可以使用以下键 omz13.xmlsitemap
下的条目
disable
:一个布尔值,如果为 true,则禁用 xmlsitemap 功能(参考xmlsitemap
在 viasite.txt
)。debugqueryvalue
:一个字符串,用作查询参数debug
的值,以返回带有调试信息的网站地图页面(作为 html 注释嵌入)。必须将全局 kirbydebug
配置设置为 true 才能使用此功能。url 必须指向/sitemap.xml?debug=debugqueryvalue
而不是/sitemap?debug=_debugqueryvalue_
(即.xls
部分很重要)。请注意,调试信息将显示(如果适用),任何已排除的页面的详细信息(因此,如果您在生产中使用此功能,并且不想泄露信息,请将debugqueryvalue
设置为随机值)。此外,还需要设置网站调试标志(即site/config.php
中的debug
标志)。- !!!
includeUnlistedWhenSlugIs
:一个包含要包括其状态的未列出页面 slug 名称的数组。 excludePageWhenTemplateIs
:一个包含要排除从 xml-sitemap 中的模板名称的数组。excludePageWhenSlugIs
:一个包含要排除从 xml-sitemap 中的页面 slug 名称的数组。excludeChildrenWhenTemplateIs
:一个包含要忽略其子项的模板名称的数组(但包含与模板关联的页面应包含在内);这用于单页(其中主要页面将被包含,所有“虚拟”子项将被忽略)。linkyChildrenWhenTemplateIs
:一个模板名称数组,其子节点将作为锚点链接包含在其父节点中;这用于单页文档(其中主页面将包含,所有“虚拟”子节点需要在站点地图中拥有自己的条目)。请注意,确保子页面锚点名称由模板生成是您的责任。
例如,对于Kirby Starter Kit,以下适用:
<?php return [ 'omz13.htmlsitemap' => [ 'debugqueryvalue' => false, 'excludePageWhenTemplateIs' => array('sandbox'), 'excludePageWhenSlugIs' => [ 'form','contact' ], 'excludeChildrenWhenTemplateIs' => array('events','one-pager','shop','testimonials'), 'linkyChildrenWhenTemplateIs' => array('team') ], ];
若要在/sitemap?debug=wombat
返回调试后的站点地图,则为:
<?php return [ 'debug' => true, 'omz13.htmlsitemap' => [ 'debugqueryvalue' => 'aardvark', 'excludePageWhenTemplateIs' => array('sandbox'), 'excludePageWhenSlugIs' => [ 'form','contact' ], 'excludeChildrenWhenTemplateIs' => array('events','one-pager','shop','testimonials'), 'linkyChildrenWhenTemplateIs' => array('team') ], ];
通过内容字段
如果页面内容有一个名为excludefromxmlsitemap
的字段,并且将其设置为true
,则该页面(如果有子节点,也包括子节点)将被排除。类似于site.txt
,这可以在蓝图文件中轻松实现。
type: fields fields: excludefromhtmlsitemap: label: Exclude from sitemap type: toggle default: off text: - include implicitly - explicitly exclude
由于页面在站点地图中是隐式包含的,因此此机制仅在您有理由明确排除页面且无法以其他方式做到时使用(例如,excludePageWhenTemplateIs
)。
用途
StarterKit
一个示例渲染的/sitemap
看起来如下:
其底层HTML如下:
<body> <ul> <li id="home"><a href="https://kir.by">Home</a> <li><a href="https://kir.by/projects">Projects</a> <ul> <li><a href="https://kir.by/projects/trees-and-stars-and-stuff">Trees and stars and stuff</a> <li><a href="https://kir.by/projects/oceans-are-quite-nice">Oceans are quite nice</a> <li><a href="https://kir.by/projects/glowing-in-the-dark-tent">Glowing in the dark tent</a> <li><a href="https://kir.by/projects/drones">Drones</a> <li><a href="https://kir.by/projects/lame-light-effects">Lame light effects</a> </ul> <li><a href="https://kir.by/blog">Blog</a> <ul> <li><a href="https://kir.by/blog/extending-kirby">Extending Kirby</a> <li><a href="https://kir.by/blog/licensing-kirby">Licensing Kirby</a> <li><a href="https://kir.by/blog/content-in-kirby">Content in Kirby</a> </ul> <li><a href="https://kir.by/shop">Shop</a> <li><a href="https://kir.by/team">Team</a> <ul> <li><a href="https://kir.by/team#bob-meowerly">Bob Meowerly</a></li> <li><a href="https://kir.by/team#brad-kitt">Brad Kitt</a></li> <li><a href="https://kir.by/team#cat-winslet">Cat Winslet</a></li> <li><a href="https://kir.by/team#hunter-s-tomcat">Hunter S. Tomcat</a></li> </ul> <li><a href="https://kir.by/one-pager">One Pager Example</a> <li><a href="https://kir.by/restaurant-menu">Restaurant Menu</a> <li><a href="https://kir.by/events">Events</a> <li><a href="https://kir.by/testimonials">Testimonials</a> </ul> </body>
免责声明
此插件“现状”提供,不提供任何保证。请在自己的风险中使用它,并在将插件用于生产环境之前自行测试。如果您发现任何问题,请创建一个新的问题。
许可证
禁止您将此插件用于任何宣传种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目。
给我买杯咖啡
为了支持此项目,您可以通过给我买杯咖啡来表示您的支持。