안녕하세요, 제 첫 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가지를 찾았습니다:
-
addTagsHtmlCallback- 이 경우,topic.tags값을 다른 변수에 할당한 직후 빈 배열로 설정해야 합니다. 이렇게 하면tags렌더링을 방지하고 사용자 정의 코드를 작성할 수 있습니다. -
replaceTagRenderer- 두 번째 방법은tag렌더링을 변경할 수 있어 1번 방법만큼 해킹적인 느낌이 들지 않습니다.
하지만 두 경우 모두 raw 문자열을 반환해야 한다는 점에 주목해 주세요. 제가 찾은 바로는 Ember 템플릿을 수동으로 작성하고 컴파일할 수 없습니다. 물론 app/assets/javascripts 루트에 jQuery를 사용한 간단한 함수를 작성하여 사용자 정의 링크를 렌더링하는 것도 가능하지만, 이는 Discourse 코드와 비교했을 때 완전히 다른 솔루션입니다.
제 방향이 맞나요? 어떤 도움이라도 감사히 받겠습니다.
