2

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

例子:

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

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

我在 Discourse 论坛上写了一篇关于它的帖子,但没有收到将 Regex 放入管理部分的永久链接规范化输入字段的答案。

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

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 库应该有助于更好地了解如何实现这一点)。我不知道如何解决这个问题,因为我似乎需要一些关于 Discourse 路由的知识才能使其工作。例如,我不明白为什么(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

注意: Permalink Normalization 输入字段将字符|视为分隔多个 Regex 表达式的分隔符。

4

3 回答 3

2

我认为这可能是您要放入 de 设置字段中的表达式:

/(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
于 2016-07-12T10:10:04.833 回答
0

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

forum\.domain\.com\/t\/[^0-9\/]+\/\d{1,9}$

您可以将“论坛”替换为您的论坛名称,将“域”替换为您的域名。

于 2016-07-09T16:52:50.640 回答
0

"/<digits>"这将删除一个又一个尾随"/<digits>"

/(forum.domain.com(\/\w+)*\/\d+)\/\d+(?=\s|$)/\1
于 2016-07-09T16:59:05.410 回答