sgkirby/sendmentions

此包已被废弃,不再维护。没有建议的替代包。

向内容中的URL发送webmention和pingback

1.0-beta.1 2020-06-02 08:37 UTC

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

form

点击齿轮图标会打开一个对话框,显示发送的ping的详细列表;点击存档项目将跳转到archive.org上的存档副本,通过点击刷新图标可以重新触发向webmention/pingback目标发送的通知

form

默认情况下,发布或更新页面(已激活插件的模板类型)不会自动触发发送通知。相反,可以为每个页面单独激活“发布时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

要求

Kirby 3.3+

鸣谢

灵感来自

包含的供应商库

许可

Kirby 3 Sendmentions是开源软件,受MIT许可证许可。

版权所有 © 2020 Sebastian Greger

不建议在任何宣传破坏我们的星球、种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目中使用此插件。