sgkirby / sendmentions
向内容中的URL发送webmention和pingback
Requires
This package is auto-updated.
Last update: 2023-01-04 11:32:16 UTC
README
🛑 此项目已被存档且不再维护。您可随意分叉它或在其基础上构建出色的项目——它采用MIT许可,因此您可以随意发挥创意。目前,存档版本仅在Kirby 3.3版本上进行过测试;它可能在3.5版本之后存在严重问题,并且可能无法与PHP 8兼容。
Kirby 3 Sendmentions
该插件可以配置为向页面内容中链接的所有URL发送Webmention。这会通知接收网站它们已被链接,并且如果需要,它们可以显示这些链接。如果目标网站没有提供webmention端点,则会尝试发送pingback。作为附加选项,该插件还可以请求将所有链接页面存档在archive.org上(默认情况下禁用选项;请参阅下面的选项)。
大多数接收webmention的网站不仅会验证链接,还会解析源页面以确定帖子标题、作者信息等。因此,在模板中使用适当的微格式标记——如博客文章的h-entry——强烈建议。
默认值和设置参数与之前的版本(0.x,2020年6月之前)相比有显著变化。更新到最新版本时,需要更改蓝图和配置设置;最显著的变化是新版本默认关闭,必须激活特定模板才能使用,以确保更好地控制数据流。
注意。此插件仅涵盖出站webmention(通知您内容中链接的其他网站)。从其他网站接收webmention并在页面模板中显示它们需要单独的解决方案,例如Kirby 3 Commentions。
安装
Composer
composer require sgkirby/sendmentions
Git子模块
git submodule add https://github.com/sebastiangreger/kirby3-sendmentions.git site/plugins/kirby3-sendmentions
下载
下载并将此存储库复制到/site/plugins/kirby3-sendmentions。
设置
必须通过在site/config/config.php中定义其名称来为特定模板类型激活插件
// the templates that sending pings should be allowed for 'sgkirby.sendmentions.templates' => ['default', 'note'],
如果您还想将可选的存档请求发送到archive.org,以类似的方式设置适用的模板名称(目前此操作仅适用于已激活的插件模板)
// the templates that should request links to be archived // (has to be a subset of those in the .templates setting) 'sgkirby.sendmentions.archiveorg' => ['default', 'note'],
要在面板中显示和管理页面的提及发送(技术上为可选,但强烈推荐以更好地控制),请将以下内容添加到site/blueprints/pages中相应的蓝图
sections: sendmentions: type: sendmentions
面板部分展示了一个小的提及计数器(从左到右:成功发送的webmention、发送的pingback、没有兼容端点的网站、在archive.org上存档的链接)以及一个开关,用于覆盖默认设置,以确定是否在发布/更新时发送ping
点击齿轮图标会打开一个对话框,显示发送的ping的详细列表;点击存档项目将跳转到archive.org上的存档副本,通过点击刷新图标可以重新触发向webmention/pingback目标发送的通知
默认情况下,发布或更新页面(已激活插件的模板类型)不会自动触发发送通知。相反,可以为每个页面单独激活“发布时ping”和“更新时ping”。要更改全局默认设置,即自动触发所有模板的通知(并允许单独禁用它们) - 将以下变量之一或两个设置为true
// sets default to: send pings on page publication unless disabled for a page 'sgkirby.sendmentions.pingOnPublish' => true, // sets default to: send pings on page update unless disabled for a page 'sgkirby.sendmentions.pingOnUpdate' => true,
在发布/更新页面时发送webmention和pingback会导致面板显著延迟(如果文章中有十几个或更多的链接,UI可能会在几分钟内“冻结”,因为轮询所有链接页面可能需要很长时间)。为了避免这种情况,插件的默认设置是使用队列进行异步处理。为了清空队列,cronjob应定期调用URL https://<YOUR-SITE-URL>/sendmentions-processqueue?token=<YOUR-TOKEN>。
密钥通过以下配置变量设置;它必须由至少10个字母数字字符组成,且不能包含以下字符:& % # + 或空格符号
// the token to protect the cronjob target 'sgkirby.sendmentions.secret' => '<YOUR-SECRET>',
注意。在您在config.php中设置有效密钥之前尝试触发队列处理将导致错误。
目前,该插件仍支持设置同步发送通知(这可能在以后的版本中删除)。这被强烈不建议,但由于用户体验不佳,您可以通过设置此变量来禁用异步队列和cronjob设置
// disables the cronjob queue and sends pings instantly instead // (causes long delays in panel UI; not recommended and soon to be removed) 'sgkirby.sendmentions.synchronous' => true,
如果您的网站使用虚拟页面:如果虚拟页面不是通过Kirby面板创建的(例如,从数据库或CSV文件生成的虚拟页面),则需要单独通过调用此函数并使用相应的Kirby页面对象作为变量来触发发送webmention
// triggering the enqueue/send process for a Page object \sgkirby\SendMentions\SendMentions::send($page);
选项
该插件可以在您的site/config/config.php中进行配置
| 选项 | 默认值 | 描述 |
|---|---|---|
sgkirby.sendmentions.templates |
[] | 默认情况下,不向任何页面发送webmention;要激活特定模板的发送,请将模板名称添加到该变量中。 |
sgkirby.sendmentions.archiveorg |
[] | 仅将链接URL发送到archive.org中的指定模板(必须是包含在templates数组中的模板)。 |
sgkirby.sendmentions.pingOnPublish |
false | 如果设置为true,则默认情况下发布页面将触发发送通知(可以在面板中按页面覆盖)。 |
sgkirby.sendmentions.pingOnUpdate |
false | 如果设置为true,则默认情况下更新已发布的页面将触发发送通知(可以在面板中按页面覆盖)。 |
sgkirby.sendmentions.synchronous |
false | (将要弃用)如果设置为true,则通知将立即发送而不是存储在队列中,由cronjob清除。这会导致具有许多链接的页面在面板中UI冻结,不建议使用。 |
sgkirby.sendmentions.secret |
用于验证cronjob触发URL的密钥。至少10个字符的字母数字字符串,且不包括& % # + 或空格符号 。 |
功能
插件功能
- 仅对指定的模板有效
- 仅向状态为“已列出”的页面发送通知
- 异步发送webmention,避免保存时面板卡顿
- 自定义在发布和/或更新页面时发送通知的默认设置
- 如果不存在Webmention端点,则回退到发送Pingback
- 存储每个发送的webmention的目标URL、时间戳和HTTP响应代码
- 在面板中全面显示发送的webmention(带有手动重发选项)
- 使用目标URL对archive.org进行ping(可选,默认关闭)
- 在webmention.rocks上通过所有23个端点发现测试(第23项仍缺失)
路线图/想法
- 编辑内容后重新发送webmention(“更新”webmention;目前禁用以避免快速编辑时的垃圾邮件 - 可以在异步过程中缓冲)
- 为已删除的帖子(或状态更改为“已列出”之外的帖子)发送webmention
- 向内容中移除的URL发送webmention
- 寻找并实施最佳URL正则表达式以在内容中扫描URL
- 在主内容之外的其他(可自定义)字段中查找URL
- 在HTTP头定义的时间段内重用缓存的端点URL
- 实现大小限制;不向异常庞大的页面发送webmention
要求
鸣谢
灵感来自
- https://github.com/bastianallgeier/kirby-webmentions
- https://github.com/sebsel/seblog-kirby-webmentions
包含的供应商库
许可
Kirby 3 Sendmentions是开源软件,受MIT许可证许可。
版权所有 © 2020 Sebastian Greger
不建议在任何宣传破坏我们的星球、种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目中使用此插件。

