rainlab / sitemap-plugin
October CMS 的网站地图插件
Requires
- php: >=5.5.9
- composer/installers: ~1.0
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(),
)
)
)