태그용 토픽 진입 플러그인

안녕하세요, 제 첫 Discourse 플러그인을 개발하고 있습니다.

아이디어

태그 링크의 동작 방식을 약간 변경하고 싶습니다. Discourse의 어디에서든 태그가 클릭되면, 해당 태그 페이지로 바로 이동하는 대신 두 가지 옵션을 표시하는 것입니다. 하나는 일반적인 태그 URL(forum.com/tag/tag-name)이고, 다른 하나는 우리가 원하는 관련(외부) 페이지(something.site.com/some-name)입니다. 이 옵션은 목록에 있는 태그에 대해서만 표시되어야 합니다.

이 목록은 Ruby 해시 배열(또는 JSON) 형태로 제공되며, 플러그인에 직접 추가하거나 URL을 통해 제공받을 수 있습니다. (전자가 더 리소스 효율적인 것 같습니다. 업데이트 빈도가 높지 않으므로, 목록이 업데이트될 때마다 목록을 갱신하고 플러그인을 다시 빌드하면 되니까요.)

# Ruby 해시 배열
array = [
  {forum_tag: "discourse", external_slug: "discourse"},
  {forum_tag: "dc", external_slug: "discourse"},
  {forum_tag: "xenforo", external_slug: "xenforo"},
  {forum_tag: "xf", external_slug: "xenforo"}
]

# 또는

array.to_json
=> "[{\"forum_tag\":\"discourse\",\"external_slug\":\"discourse\"},{\"forum_tag\":\"dc\",\"external_slug\":\"discourse\"},{\"forum_tag\":\"xenforo\",\"external_slug\":\"xenforo\"},{\"forum_tag\":\"xf\",\"external_slug\":\"xenforo\"}]"

기본적으로 메인 포럼 페이지에서 replies(답글) 숫자를 클릭할 때와 유사한 옵션 표시 방식을 원합니다:

제 생각

태그와 관련된 Discourse API 메서드 2가지를 찾았습니다:

  1. addTagsHtmlCallback - 이 경우, topic.tags 값을 다른 변수에 할당한 직후 빈 배열로 설정해야 합니다. 이렇게 하면 tags 렌더링을 방지하고 사용자 정의 코드를 작성할 수 있습니다.

  2. replaceTagRenderer - 두 번째 방법은 tag 렌더링을 변경할 수 있어 1번 방법만큼 해킹적인 느낌이 들지 않습니다.

하지만 두 경우 모두 raw 문자열을 반환해야 한다는 점에 주목해 주세요. 제가 찾은 바로는 Ember 템플릿을 수동으로 작성하고 컴파일할 수 없습니다. 물론 app/assets/javascripts 루트에 jQuery를 사용한 간단한 함수를 작성하여 사용자 정의 링크를 렌더링하는 것도 가능하지만, 이는 Discourse 코드와 비교했을 때 완전히 다른 솔루션입니다.

제 방향이 맞나요? 어떤 도움이라도 감사히 받겠습니다.

관심 있으신 분들을 위해, 제 플러그인의 첫 릴리스를 기쁘게 발표합니다!

여러분의 피드백을 기대합니다!

관심 있는 분들을 위해 최신 변경 사항, 특히 아래 링크를 확인해 보시길 추천드립니다:

모두 좋은 … 하루 되세요! (?)

:smiling_imp:

잘하셨네요 @Eiji!


이 플러그인을 Devtalk에서 사용하려고 합니다… 디스코URS 플러그인에 익숙하신 분 중 개선할 부분이 있는지 확인해 주실 수 있을까요? 정말 감사하겠습니다 :blush: