From a26a56377bac00386903a7f283a764ed2f496475 Mon Sep 17 00:00:00 2001 From: Steven Chang <42795314+Alteras1@users.noreply.github.com> Date: Sun, 1 Jun 2025 21:39:53 -0700 Subject: [PATCH 1/2] Adds permalink normalization regex for XF topic links Extends the SiteSetting instead of override --- plugin.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugin.rb b/plugin.rb index 38e051c..41195b3 100644 --- a/plugin.rb +++ b/plugin.rb @@ -25,4 +25,14 @@ module ::DiscourseModifications # and applying a Initializer pattern to load them. Topic.slug_computed_callbacks << ::DiscourseModifications::TopicSlug.method(:slug_for_topic) + + # add permalink normalization + XF_TOPIC_LINK_NORMALIZATION = '/threads\/[^.]+\.([0-9]+)\/?/threads/\1' + normalizations = SiteSetting.permalink_normalizations + normalizations = normalizations.blank? ? [] : normalizations.split("|") + + normalizations << XF_TOPIC_LINK_NORMALIZATION if normalizations.exclude?(XF_TOPIC_LINK_NORMALIZATION) + + SiteSetting.permalink_normalizations = normalizations.join("|") + end From 1be6517369c33939b152641abb3b75ec8ad52aab Mon Sep 17 00:00:00 2001 From: Alteras1 <42795314+Alteras1@users.noreply.github.com.> Date: Wed, 4 Jun 2025 21:48:01 -0700 Subject: [PATCH 2/2] Fix lint --- plugin.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugin.rb b/plugin.rb index 41195b3..141d822 100644 --- a/plugin.rb +++ b/plugin.rb @@ -14,6 +14,8 @@ module ::DiscourseModifications PLUGIN_NAME = "discourse-modifications" + + XF_TOPIC_LINK_NORMALIZATION = '/threads\/[^.]+\.([0-9]+)\/?/threads/\1' end require_relative "lib/discourse_modifications/engine" @@ -27,11 +29,10 @@ module ::DiscourseModifications Topic.slug_computed_callbacks << ::DiscourseModifications::TopicSlug.method(:slug_for_topic) # add permalink normalization - XF_TOPIC_LINK_NORMALIZATION = '/threads\/[^.]+\.([0-9]+)\/?/threads/\1' normalizations = SiteSetting.permalink_normalizations normalizations = normalizations.blank? ? [] : normalizations.split("|") - normalizations << XF_TOPIC_LINK_NORMALIZATION if normalizations.exclude?(XF_TOPIC_LINK_NORMALIZATION) + normalizations << ::DiscourseModifications::XF_TOPIC_LINK_NORMALIZATION if normalizations.exclude?(::DiscourseModifications::XF_TOPIC_LINK_NORMALIZATION) SiteSetting.permalink_normalizations = normalizations.join("|")