2016-07-09 6 views
2

私はDiscourseフォーラムソフトウェアを使用しています。現在の状態のように、Discourseは最後にポスト番号がある場合とない場合の2つの方法でトピックへのリンクを提示します。談話フォーラムのトピックリンクを正規化する正規表現

例:

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

最初のものは、私が欲しいものであると私はしたいもう一つは全くフォーラムに表示されないように。

私はDiscourseフォーラムでa post about itと書いていますが、管理セクションの正規表現の正規化入力フィールドに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 

Iをリンクから投稿番号の数値を削除するためにRegexが何を使うべきかわからない。私はトピックのリンクのためだけにそれが必要です。

これはroutes.rbルーティングライブラリであり、これは(私がパーマリンクライブラリはどのようにこれを達成するために、より良い手がかりを得るのを助けるべきだと思います)permalink.rbライブラリです。どのようにこれにアプローチするのか分かりません。なぜなら、Discourseルーティングの知識を必要としているように思えるからです。たとえば、私は(topic.)が正規表現の一部である理由を理解していませんが、それはどういう意味なのですか?その例は私に解決策を見つけるのに役立ちません。

管理者には、正規化正規表現コードを入力するための入力フィールドがあります。

私はRegexのヘルプが必要です。 すべてのトピックで作業する正規表現が必要です。

/(\/\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 

注:固定リンク正規の入力フィールドには、いくつかの正規表現式の間分離するセパレータとして文字|を扱い、私はが出を働かなかったことを試みた

物事。

+0

私は談話またはそのパーマリンク管理を知らない、しかし、あなたが望むもののための正規表現は\/\ '/(\/\ D +)可能性がありd + $/\ 1'となります。多くは、談話によってどのような正規表現の機能がサポートされているかによって異なります。あなたは '$'なしでやるか、 '\ d'を' [0-9] 'で置き換える必要があります。 – trincot

+0

@trincot/t /は、談話の話題を示していますが、話し言葉のバックルーティングコーディングに関係するものが多分あります。 –

+0

おそらく '^ /(t/some-topic/\ d +)。*/\ 1'ですか?正規表現が 'forum.domain.com/t/some-topic/23'を持っているときに'/t/some-topic/23'という文字列を入力した場合、これはうまくいくかもしれません。あなたは実際に '/(topic。*)\?。*/\ 1'を提案されていますが、アスタリスクはフォーマットが正しくないために失われています。 –

答えて

2

私は、これはあなたが内部のデ設定フィールドを置くために探している表現かもしれないと思う:

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

あなたはそれをworking on Rubular見ることができます。

ただし、the code that generates the urlは正規化コードを使用していないため、式は無視されています。

あなたはそこにパーマリンクを正規化試みることができる:

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

私は本当にあなたの質問を理解していませんでしたが、私はそれを正しくしたら、最後に/ some-numberとのリンクが必要だと言っていますが、/ some-number/some-number最後に。その場合は、正規表現は次のとおりです。

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

あなたのフォーラム名とドメイン名を持つ「ドメイン」で「フォーラム」を置き換えることができます。

+0

トピックのリンクは、最後にはトピックIDを意味する1つの数字だけでなければなりませんが、トピック内の投稿IDを示す2番目の数字ではありません。私は談話と互換性があるように正規表現が必要です。彼らは(私が質問で示した)例を与え、同じ規則に従うように私に言った。 –

0

これは別の"/<digits>""/<digits>"末尾削除します:

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

私はそれを試みましたが、談話はまだ最後のポストID(2番目の数値)とのリンクを示しています。たぶん「トピック」。なぜ彼らはトピックを使用するのかわからないので、談話の正規表現に何かを意味します。彼らの例では、おそらくそれが必要です。 –

+0

@IdanShechter今すぐ試してください(談話は先読みをサポートしていると仮定します) – Bohemian

+0

入力フィールドの正規表現が壊れている可能性があります。おそらく異なる正規表現を分離する文字になります。入力フィールドはいくつかの正規表現を受け入れることができます。正規表現をコピーしてコピーすると、?= \ sの後に改行され、残りの正規表現が作成され、$ \/1が新しいテキストとして残ります –