Ruby on rails - 正则表达式用于规范话语论坛中的主题链接



我正在使用话语论坛软件。与当前状态一样,Discourse以两种方式呈现主题链接,末尾有和没有帖子编号。

例:

forum.domain.com/t/some-topic/23
forum.domain.com/t/some-topic/23/5

第一个是我想要的,第二个我根本不想显示在论坛中。

我在话语论坛上写了一篇关于它的文章,但没有收到在管理部分的永久链接规范化输入字段中放置什么正则表达式的答案。

有人告诉我,有一个选项可以使用永久链接规范化来做到这一点,就像这样(这是管理员在正则表达式输入文本下显示的示例,我没有写):

permalink normalizations
Apply the following regex before matching permalinks,
for example: /(topic.)?./1 will strip query strings from topic routes.
Format is regex+string use 1 etc. to access captures

我不知道我应该使用什么正则表达式才能从链接中删除帖子编号的数值。我只需要它用于主题链接。

这是routes.rb路由库,这是permalink.rb库(我认为permalink库应该有助于更好地了解如何实现这一目标)。我不知道如何处理这个问题,因为似乎我需要一些话语路由的知识才能使其工作。例如,我不明白为什么(topic.)是正则表达式的一部分,这意味着什么,所以他们的例子并不能帮助我找到解决方案。

在管理员中,我有一个输入字段,我需要在其中放置规范化正则表达式代码。

我需要正则表达式的帮助。我需要正则表达式来处理所有主题

我尝试过但没有成功的事情:

/(/d+)/d+$/1
/(t/[^/]+/d+).*/1
/(/d+)/[0-9]+$/1
/(/d+)/[0-9]+/1
/(/d+)/d+$/1/
/(forum.domain.com(/w+)*/d+)/d+(?=s|$)/1

注: 永久链接规范化输入字段将字符|视为分隔符,以分隔多个正则表达式。

我认为这可能是您要放在 de settings 字段中的表达式:

/(t/.*/d+)(/d+)/1

你可以看到它在Rubular上工作。

但是,生成 url 的代码未使用规范化代码,因此将忽略该表达式。

您可以尝试在那里规范化永久链接:

def last_post_url
  url = "#{Discourse.base_uri}/t/#{slug}/#{id}/#{posts_count}"
  url = Permalink.normalize_url url
  url
end

我并没有真正理解你的问题,但如果我做对了,你是说你想要最后与/some-number 的链接,但不要在末尾与/some-number/some-number 链接。如果是这种情况,正则表达式是:

forum.domain.com/t/[^0-9/]+/d{1,9}$
您可以将"论坛"

替换为您的论坛名称,将"域"替换为您的域名。

这将

在另一个"/<digits>"后删除尾随"/<digits>"

/(forum.domain.com(/w+)*/d+)/d+(?=s|$)/1

相关内容

最新更新