rah / rah_sitemap
Textpattern CMS 的 XML 站点地图插件
Requires
- php: >=7.4
- ext-zlib: *
- textpattern/installer: *
- textpattern/lock: >=4.8.8
Requires (Dev)
- rah/mtxpc: ^0.9.0
- squizlabs/php_codesniffer: 3.*
README
Textpattern CMS 的站点地图插件。为您的网站生成 Sitemaps.org XML 站点地图,帮助 Google 和其他搜索引擎索引您的网站内容。映射您的分类、章节、文章以及您选择的定制 URL。无需深入研究代码,所有配置均通过图形用户界面完成。
安装
使用 Composer
$ composer require rah/rah_sitemap
或 下载 安装程序包。
基本功能
Rah_sitemap 为您的 Textpattern 网站生成站点地图,列出所有章节、文章类别和文章页面。生成的站点地图遵循基于 XML 的 Sitemap 协议格式,针对搜索引擎而非访客。该站点地图旨在帮助搜索引擎索引您的网站,随着网站的增长和嵌套页面的增多。
可以直接从 Textpattern 的“偏好设置”面板配置站点地图,使 rah_sitemap 设置和使用变得简单。
访问站点地图
生成的站点地图从网站的根目录公开访问。根据网站的永久链接模式,可以从两个 URL 访问站点地图。如果网站配置为使用干净 URL,则可以使用类似 http://example.com/sitemap.xml
的干净路径访问站点地图,其中 example.com
是网站的 URL。此外,在混乱和干净 URL 模式下都提供查询字符串版本,http://example.com/?rah_sitemap=sitemap
,如果其他版本不可用,则可以使用。
能立即提升搜索引擎可见性吗?
并不完全如此。提供站点地图是为了帮助爬虫,找到您可能难以发现的网站页面。站点地图本身并不提升内容的可见性。
对于简单、几乎静态的网站,只有少量易于发现的页面,可能根本不需要站点地图。如果搜索引擎已经可以到达您的页面,您实际上不需要 rah_sitemap,或者一般而言不需要站点地图。一旦页面被索引,站点地图的工作就结束了。
Rah_sitemap 特别适用于您的网站有难以发现的页面,例如使用 JavaScript 加载的页面、有少量链接的独特内容或嵌套在复杂页面结构中的页面。Rah_sitemap 还可以在您的网站具有指向其页面很少的外部链接时帮助其启动。
认为Sitemap能保证页面被索引是一种常见的误解。这并不正确。Sitemap只是一个地图。地图上标记了某个地方,并不意味着有人会真的去那里,或者什么时候去。像任何地图一样,地图是用来寻找和学习,以增加未来的知识的。Sitemap的更新间隔也有助于估计您的网站下次更新时间和下次应该再次爬取的时间。
通常,提交Sitemap会对您有益,但这只是拼图中的一块。在任何情况下,您都不会因为Sitemap或其中包含错误内容而受到惩罚。
配置
安装rah_sitemap后,您可能想要对其进行配置,以适应您的网站。例如,您可能想要排除某些不相关的文章或部分。您可以通过Textpattern的偏好设置面板配置插件设置,该面板组织在其自己的Sitemap部分下。您可以从各自的编辑器中排除部分和分类。
向搜索引擎发送Sitemap
一旦您有了运行中的Sitemap,您可能希望通知搜索引擎其存在。您可以通过几种方式做到这一点:对于Google,您可以使用Google搜索中心,或者使用robots.txt指令或搜索供应商特定的ping。
推荐的方法是使用robots.txt文件。为了使robots.txt运行,您必须在网站域的根目录下添加robots.txt
文件,使其可通过https://example.com/robots.txt
访问。如果您的Textpattern网站具有完全功能的干净URL,安装在根目录,并且您尚未有robots.txt文件,rah_sitemap将自动为您创建该文件——或者,动态地提供它。
如果没有,您需要在域根目录下创建或编辑一个名为robots.txt
的文件。在该文件中,您将添加一个包含到您的Sitemap的绝对URL
的Sitemap
指令
Sitemap: https://example.com/?rah_sitemap=sitemap
其中https://example.com/
是您在Textpattern的偏好设置面板中定义的网站位置。该指令应放在其自己的行上。
偏好设置
Rah_sitemap附带了一些偏好设置,您都可以在偏好设置面板中找到,该面板组织在其自己的Sitemap部分下。Rah_sitemap允许排除XML Sitemap中的部分、分类和文章。以下选项将存在。
根据字段排除文章
可以使用字段根据任何文章字段及其值排除文章从Sitemap。该选项接受逗号分隔的articlefield: value
对列表,其中字段是数据库字段,值是排除的字段值。可用的字段包括Title
、AuthorID
、Body
、Excerpt
、Category1
、Category2
、Section
、Keywords
、url_title
、custom_1
到custom_10
和Image
。
选项中使用的值支持两个通配符。下划线(_
)匹配一个字符,百分号(%
)匹配零个或多个字符。
如果您想排除发布到名为notes和private的部分或由用户mailer发布的文章,您可以在字段中使用以下内容
Section: notes, Section: private, AuthorID: mailer
附加URL
添加到网站地图的附加本地站点URL的逗号分隔列表。请注意,网站地图只允许本地URL,这意味着任何使用的URL需要链接到与网站本身所在的同一域名。如果URL是相对的并且不以HTTP或HTTPS协议开头,则网站的URL将添加到该URL之前。
包含未来文章?
如果设置为“是”,则具有未来发布日期的文章将在网站地图中可见。请注意,默认情况下,文章标签不显示未来文章,除非其time
属性明确设置为future
或any
。
包含已发布文章?
如果设置为“是”,则已发布的文章将在网站地图中可见。如果此选项和包含未来文章?都设置为“否”,则网站地图中不会显示任何文章。
包含过期文章?
如果设置为“否”,则过期文章不会在网站地图中可见。
排除固定文章?
如果设置为“是”,则固定文章不会在网站地图中可见。
开发者
Rah_sitemap为开发者提供了一组小工具。这些工具允许其他Textpattern插件通过向网站地图添加新URL来扩展rah_sitemap的功能。该插件打包在可扩展的类结构中(如果需要),并引入了新的Textpattern回调事件。
回调
Rah_sitemap向Textpattern的事件库中引入了一个新的公开回调事件,名为rah_sitemap.urlset
。该事件在打印网站地图之前触发。回调事件可以与API一起使用,以向网站地图添加新URL。
与其他Textpattern回调事件一样,通过Textpattern的回调处理函数连接到rah_sitemap的事件,主要是register_callback。
register_callback('abc_function', 'rah_sitemap.urlset', 0, $urls);
fuction abc_function($event, $step, &$urls) { $urls['https://example.com/foo/bar'] = 123456789; $urls['https://example.com/second'] = null; }
上面的代码会将https://example.com/foo/bar
添加到网站地图中,其UNIX修改时间戳为123456789
,并将https://example.com/second
添加到没有修改时间。
自定义URL函数
如果您为Textpattern提供自定义URL函数,请注意,该函数生成的URL需要符合RFC 3986和RFC 3987。所有URL都应该使用Textpattern的txpspecialchars
函数从特殊语法字符中转义。Textpattern自身生成的所有URL都遵循这些规范,因此您的自定义URL插件也应该这样做。
由于rah_sitemap与Textpattern的核心很好地集成,因此它使用与Textpattern相同的URL函数。如果提供给网站地图的URL不符合这些规范,则网站地图将无效。
更改日志
版本 4.0.2 – 2023/08/30
- 修复:由版本3.0.0中的回归引起的“基于字段排除文章”设置,文章现在可以通过字段值过滤器再次从源中排除。
版本 4.0.1 – 2023/02/18
- 修复:由于Textpattern 4.8.8核心问题导致的lastmod日期生成问题。根据其支持的功能,日期格式字符串会被传递到错误的日期函数。通过直接使用PHP的
date
函数而不是Textpattern的safe_strftime
来缓解问题。
版本 4.0.0 – 2022/09/25
- 修复:由Textpattern 4.8.8中的回归引起的无效lastmod日期格式。
- 现在需要Textpattern >= 4.8.8。
版本 3.0.0 – 2022/04/23
- 现在可以处理拥有数十万篇文章的大型网站。现在不是生成一个大型网站地图,而是生成一个网站地图索引,该索引链接到较小的分片网站地图。这减少了网站地图生成内存的使用。
- 现在需要PHP >= 7.4.0。
版本 2.1.0 – 2020/01/01
- 新增:全局选项,通过类型排除从网站地图中排除的分类。感谢,Sebastian Spautz。
- 新增:德语翻译。感谢,Sebastian Spautz。
版本 2.0.2 – 2020/01/01
- 修复:是/否切换默认选择渲染。感谢,Sebastian Spautz。
- 修复:排除过期文章。感谢,Sebastian Spautz。
版本 2.0.1 – 2019/11/01
- 修复:排除过期文章的选项。
版本 2.0.0 – 2019/04/20
- 修复:生成有效的
/年/月/日/标题
永久链接。感谢,Wladimir Palant。 - 删除旧的遗留首选项迁移代码。
- 使用首选项 API 创建首选项选项。
- 现在需要 Textpattern 4.7.0 或更高版本。
- 现在需要 PHP 7.2.0 或更高版本。
版本 1.3.0 – 2014/03/28
- 更改:将首选项集成到 Textpattern 的原生首选项面板、部分和分类编辑器。
- 新增:语言字符串,界面现在可以使用 Textpacks 进行翻译。
- 新增:芬兰语翻译。
- 新增:法语翻译,由 Patrick Lefevre 完成。
- 新增:中文翻译,由 WizJin 完成。
- 改进:与 Textpattern 4.5.0 的兼容性。
- 现在需要 Textpattern 4.5.0 或更高版本。
版本 1.2 – 2011/03/09
- 新增:为相对文章 permalinks 添加网站 URL。基本上是对 gbp_permanent_links 的修复。
- 更改:从
permlinkurl_id()
更改为permlinkurl()
。大大减少了生成文章 permalinks 的查询量。
版本 1.1 – 2010/10/30
- 修复:当 MySQL 处于严格模式时,安装程序出现的问题。感谢 报告,Gallex。
版本 1.0 – 2010/10/29
- 轻微更改了后端安装程序的调用;仅在没有首选项可用时检查安装。
版本 0.9 – 2010/08/25
- 修复:现在正确解析分类 URL 中的分类标签。感谢 报告),Andreas。
版本 0.8 – 2010/07/27
- 现在压缩级别字段标签现在链接到正确的字段 id。
- 现在在某些条件下抑制了实时模式中的 E_WARNING/E_STRICT 通知(TXP 4.2.0,PHP 5.1.0+,TXP 的 Auto-DST 功能已禁用,TXP 在实时模式下)。当 TXP 版本发布时,将完全工作的时区设置时,将移除错误抑制。
- 现在在 SQL 查询内生成 UNIX 时间戳,而不是用 PHP。
- 更改滑动面板的链接(
a
元素)为 span。
版本 0.7 – 2010/05/30
- 修复:现在删除自定义 URL 会返回到列表视图,而不是编辑表单。
- 移除了 v0.6 中的一些遗留内联样式。
版本 0.6 – 2010/05/30
- 重写了生成网站地图的代码。
- 新的管理面板外观。
- 现在自定义 permalinks 模式和自定义 URL 已转义。从现在起,用户可以输入未转义的 URL/标记。
- 现在自定义 URL 列表在自动填充后显示完整的格式化 URL 而不是用户输入。
- 现在以 www. 开头的自定义 URL 将使用 http:// 协议完成。
- 现在所有不以 http、https、www、ftp 或 ftps 协议开始的 URL 都会自动完成为网站的地址。
- 自定义 URL 编辑器有自己的面板。不再表单位于 URL 列表上方。
- 新增手动关闭 gzib 压缩和更改压缩级别的功能。
- 添加了设置以关闭zlib.output_compression。请参阅此处,感谢superfly的反馈。
- 现在在保存时将优先级进行整理。
- 将
rah_sitemap_update()
与rah_sitemap_save()
合并。 - 从现在开始,所有新的安装都定义了默认设置,将自动排除链接、文件和图片类别从网站地图中。这不会影响更新者。
- 将网站地图的回调注册从pre
pretext
改为在其后(回调现在是textpattern
。现在$pretext
在网站地图之前设置,因此更多的插件可以在permlink设置和自定义URL中工作。 - 当使用Textpattern的干净URL时,请求
/sitemap.xml.gz
和/sitemap.xml
URL将返回网站地图,而不仅仅是/?rah_sitemap=sitemap
。当然,这需要现有的完全工作的干净URL。
版本0.5 – 2010/03/01
- 添加了可自定义的时间戳格式。
- 清理了后端标记。
- 合并了单独的偏好查询。
版本0.4 – 2009/04/12
- 添加了对自定义permlink规则的支持:现在您可以为文章、部分和类别轻松设置任何类型的permlink规则。
- 添加了排除未来文章的选项。
- 添加了排除过去文章的选项。
- 添加了排除过期文章的选项。
- 将自定义URL UI移动到自己的页面。
- 在自定义URL UI中添加了多删除功能。
- 改进了自定义URL UI。
- 从自定义URL输入字段中移除了默认的静态附加域名。
- 将
最低要求更改为版本4.0.7(及更高版本)。注意,如果将“排除过期文章”选项留空(未设置),则插件仍然与较旧的 版本(低至4.0.5)兼容。
版本0.3.2 – 2008/10/25
- 修复了从版本0.2以来仍然包含在链接之前的安装地址的查看URL。
版本0.3 – 2008/10/24
- 添加了插入位于Textpattern安装目录外部的URL的选项。
- 修复了直接通过类型排除类别的选项:添加了遗忘的链接类型。
版本0.2 – 2008/10/22
- 添加了排除/包含固定文章的选项。
- 添加了直接通过类型排除类别的选项。
- 修复了错误:现在在管理员面板中显示所有类别,而不仅仅是文章类型。
- 修复了错误:移除了双重安装查询(没有做任何事情,只是检查了表状态两次)。
版本0.1.2 – 2008/09/12
- 修复了由讨厌的小错误引起的文章列表错误:现在只列出4和5状态。
版本0.1 – 2008/09/07
- 首次发布。