rainlab/sitemap-plugin

October CMS 的网站地图插件

安装数: 51,777

依赖项: 1

建议者: 0

安全: 0

星标: 22

关注者: 9

分支: 28

开放问题: 0

类型:october-plugin

v1.2.7 2023-07-29 06:01 UTC

This package is auto-updated.

Last update: 2024-08-29 08:19:05 UTC


README

请注意,RainLab Sitemap 插件已不再处于积极开发状态。它已被名为 Page Finder 的新表单小部件取代,该小部件提供了对定义网站地图的灵活支持,包括多站点支持。

网站地图生成插件

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

查看网站地图

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

https://octobercms.com/sitemap.xml

管理网站地图定义

网站地图通过在后台设置区域中选择“网站地图”来管理。每个主题都有一个单独的网站地图定义,并且它将自动创建。

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

标准项目类型

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

URL {.subheader}

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

静态页面 {.subheader}

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

所有静态页面 {.subheader}

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

自定义项目类型

其他插件可以提供新的项目类型。例如,由 RainLab 开发的 RainLab 插件提供了两个额外的类型。

博客分类 {.subheader}

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

所有博客分类 {.subheader}

此类型的项目将展开为多个项目,代表所有现有的博客分类。此类型也需要选择一个 CMS 页面

定义项目属性

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

引用 {.subheader}

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

允许嵌套项目 {.subheader}

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

CMS 页面 {.subheader}

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

Sitemap 插件是 即插即用 的,无需任何直接开发即可运行。

注册新的 Sitemap 定义项类型

Sitemap 插件与 Pages 插件 使用相同的注册项类型的事件。有关更多信息,请参阅此插件提供的文档。

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

  • 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(),
        )
    )
)