2016-07-09 1 views
2

나는 Discourse 포럼 소프트웨어를 사용 중입니다. Discourse는 현 상태와 마찬가지로 마지막에 게시물 번호가 있거나없는 두 가지 방법으로 주제에 대한 링크를 제공합니다.담화 포럼의 주제 링크를 정규화하는 정규식

예 :

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

첫 번째는 내가 원하는 내가 원하는 두 번째는 모든 포럼에 표시하지 않는 것입니다.

Discourse 포럼에 a post about it을 작성했지만 정규식 정규화 입력 필드에 입력 할 답변을 관리 섹션에 입력하지 않았습니다.

내가 지금 같은 퍼머 정상화를 사용하여 할 수있는 옵션이 있다는 것을 들었다는 (그것은 정규식 입력 텍스트에서 관리자에 도시 된 예입니다, 나는 그것을 작성하지 않은) :

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.)이 정규식에 포함 된 이유를 이해할 수 없다는 것은 무엇을 의미합니까? 따라서이 예제는 해결책을 찾는 데 도움이되지 않습니다.

관리자가 정규화 정규식 코드를 입력하지 않은 입력 필드가 있습니다.

정규식에 대한 도움이 필요합니다. 모든 주제로 작업하려면 정규식이 필요합니다..

것들 내가 밖으로 작동하지 않았다 시도했다 :

/(\/\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'라고합니다. Discourse가 지원하는 정규 표현식 기능에 따라 많은 요소가 있습니다. 당신은'$'없이하고 각각의'\ d'를'[0-9]'로 대체해야 할 수도 있습니다. – trincot

+0

@ trunkot/t /는 담화에서 뒷문 라우팅 코딩과 관련이 있을지 모르는 예제 (주제.)가 무엇인지 모르지만 담화에서 주제를 나타냅니다. –

+0

'^/(t/some-topic/\ d +). */\ 1'일까요? 'forum.domain.com/t/some-topic/23 '을 가지고있을 때 정규 표현식이 문자열 입력을'/ t/some-topic/23'으로 얻는다면 이것이 가능할 수 있습니다. 실제로'/ (topic. *) \?. */\ 1'라고 제안되었지만 형식이 잘못되어 별표가 없어졌습니다. –

답변

2

나는 이것이 당신이 내부 해제 설정 필드를 넣어 찾고있는 표현 될 수있다 생각 .

그러나 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로 표시된 끝에 하나의 숫자로만 표시되어야하지만 두 번째 숫자로는 주제 내의 게시물 ID를 나타내지 않아야합니다. 나는 또한 정규 표현이 담론과 조화를 이루도록해야합니다. 그들은 (내가 그 질문에서 보여 줬던) 모범을 보여 주었고 같은 규칙을 따르라고 나에게 말했다. –

0

이것은 또 다른 "/<digits>""/<digits>" 후행 제거합니다 :

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

당신은 working on Rubular를 볼 수 있습니다

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

나는 그것을 시도했다, 담론은 여전히 ​​두 번째 숫자 값으로 마지막에 게시물 ID와 링크를 보여줍니다. 어쩌면 '주제.' 왜냐하면 나는 그들이 주제를 사용하는 이유를 알지 못하기 때문에 담화에서 정규식에 대한 어떤 것을 의미합니다. 그들의 예에서, 아마도 그것이 필요합니다. –

+0

지금은 입력 필드에 정규식, 다른 정규식 표현을 분리 아마 문자를 나누기 – Bohemian

+0

(담화 지원하는 이것은 미리 봐 가정) 시도 @IdanShechter. 입력 필드는 몇 가지 정규식 표현을 받아 들일 수 있습니다 내가 당신의 정규식을 붙여 복사 할 경우,이 후 중단 = \들, 나머지에서 정규식을하고 새 텍스트 –