重写外部URL地址

我喜欢使用 Discourse 自动将监视词转换为链接的功能。但是,我也在寻找一种自动转换外部链接的方法,主要是为了插入联盟链接(亚马逊以外的)。我尝试使用监视词中的正则表达式选项来实现这一点,但它似乎不适用于链接。有人有什么建议吗?

谢谢!

您尝试过 Auto-Linkify Words 主题组件吗?我认为它比“监视的单词”具有更强的正则表达式功能。

1 个赞

是的,但没有成功。

1 个赞

Discourse Affiliate 插件 支持亚马逊和法国网站 ldlc.com,如果它有普遍用途,欢迎提交 PR。

如果不是,您可以使用此插件作为您想实现目标的参考。

3 个赞

正则表达式很难。也许你应该分享一下你尝试过的方法?

1 个赞

:100: :sweat_smile:

我用谷歌网址示例尝试了:

/(https?:\\/\\/)?(www\\.)?google\\.com/
/(https:\\/\\/)?(www\\.)?((google)?\\.com)/

1 个赞

这不足以进行调试。这会(应该会?)匹配一个谷歌网址,但您想替换什么?

我只需要匹配域名/子域名,而不是所有页面。这是我在 linkify 插件中添加的内容:

/(https?:\\/\\/)?(www\\.)?example\\.com/, https://example.com/affiliateid

我已经取得了一些进展,似乎可能与 enable markdown linkify 设置存在冲突。

此设置比组件具有优势。

我会让 Camille 深入研究,但这可能有助于解决此问题。

2 个赞

我也这么觉得。我创建了一个 https://www.digitalocean.com/ → https://m.do.co/c/a5bf212d9a92/ 的替换项,如果 enable markdown linkify 开启,它就无法工作,如果关闭,它就能工作。我真正想要的是重写链接。

主题组件可能是实现这一目标的一种方式。

1 个赞

也许最简单的解决方案是 fork Discourse Affiliate 插件 并添加我的自定义联盟链接。

这可能有点大材小用。如果你只是想重写一些 URL,你不需要太多。我有一个主题组件可以重写一些 one-box。

我有一个主题组件,它可以查找来自特定域的 one-box,并将它们重写为适合该网站的 <iframe>。对于像我这样技能平平的人来说,不难将其更改为重写你的链接。

你几乎只需要更改这个:

与 Discourse Affiliate 的方法的主要区别在于它会更改已处理内容中的链接,因此它也可以在 Web 应用程序外部使用,例如在电子邮件中或使用不同的客户端时(非常非常罕见)。只需注意这一点。

1 个赞

说得有理!而且更改已发布的帖子需要插件。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.