winter/wn-sitemap-plugin

Winter CMS 的站点地图插件

资助包维护!
wintercms
Open Collective

安装次数: 24,420

依赖项: 2

建议者: 0

安全性: 0

星级: 8

关注者: 5

分支: 5

开放问题: 2

类型:winter-plugin

v2.0.2 2023-04-15 03:39 UTC

This package is auto-updated.

Last update: 2024-09-08 18:36:11 UTC


README

此插件将根据所需的 CMS 页面和其他内容在 Winter CMS 中生成 sitemap.xml 文件。

查看站点地图

一旦安装了此插件并配置了站点地图,可以通过访问相对于网站基本路径的文件来查看站点地图。例如,如果网站托管在 https://wintercms.com,可以通过打开此 URL 来查看:

https://wintercms.com/sitemap.xml

管理站点地图定义

通过从后端的设置区域选择站点地图来管理站点地图。每个主题都有一个单独的站点地图定义,它将自动创建。

站点地图定义可以包含多个项目,每个项目都有多个属性。所有项目类型都有常见属性,一些属性取决于项目类型。常见的项目属性是 优先级更改频率。优先级定义了该项目相对于站点地图中其他项目的优先级。更改频率定义了页面可能更改的频率。

标准项目类型

可用的项目类型取决于安装的插件,但以下三种基本项目类型是默认支持的。

URL {.subheader}

此类项目是链接到特定固定 URL。这可能是一个或内部页面的 URL。此类项目没有其他属性——只有标题和 URL。

静态页面 {.subheader}

此类项目指的是静态页面。应在以下描述的 引用 下拉列表中选择静态页面。

所有静态页面 {.subheader}

此类项目扩展以创建指向主题中定义的所有静态页面的链接。

自定义项目类型

其他插件可以提供新的项目类型。例如,博客插件 提供了两种类型。

博客分类 {.subheader}

此类项目表示指向特定博客分类的链接。应在 引用 下拉列表中选择分类。此类型还需要选择一个输出博客分类的 CMS 页面

所有博客分类 {.subheader}

此类项目扩展为包含代表所有现有博客分类的多个项目。此类型还需要选择一个 CMS 页面

定义项目属性

根据所选的项目类型,您可能需要提供项目的其他属性。以下描述了可用的属性。

引用 {.subheader}

一个下拉列表,其中包含项目应引用的对象。列表内容取决于项目类型。对于 静态页面 项目类型,列表显示系统定义的所有静态页面。对于 博客分类 项目类型,列表显示博客分类列表。

允许嵌套项目 {.subheader}

此复选框仅适用于应嵌套对象的项类型。例如,静态页面是分层的,此属性适用于 静态页面 项目类型。另一方面,博客分类不是分层的,复选框是隐藏的。

CMS 页面 {.subheader}

此下拉列表适用于需要特殊CMS页面引用的项目类型。例如,博客类别项目类型需要托管blogPosts组件的CMS页面。此项目类型的CMS页面下拉列表将仅显示包含此组件的页面。

网站地图插件开箱即用,无需直接开发即可运行。

注册新的网站地图定义项目类型

网站地图插件与页面插件共享相同的注册项目类型的事件。有关更多信息,请参阅此插件提供的文档。

解决项目时需要一个小补充,通过以下事件

  • pages.menuitem.resolveItem事件处理器“解析”菜单项信息,并返回实际项目URL、标题、指示项目是否当前激活以及子项目(如果有)。
解决项目

在解决项目时,每个项目应在数组中返回一个额外的键,称为mtime。这应该是一个Date对象(请参阅Carbon\Carbon)或与PHP的date()函数兼容的时间戳值,代表链接最后一次修改的时间。

预期结果格式

Array (
    [url] => https://example.com/blog/category/another-category
    [mtime] => Carbon::now(),
    [items] => Array (
        [0] => Array (
            [url] => https://example.com/blog/category/another-category
            [mtime] => Carbon::now(),
        )

        [1] => Array (
            [url] => https://example.com/blog/category/news
            [mtime] => Carbon::now(),
        )
    )
)