정말 훌륭하네요, @angus. 정말 감사합니다.
비디오가 항상 좋은 건 맞습니다. 가능한 한 단순하게 만드는 것에 전적으로 찬성하지만, @angus가 정리해 준 이 리소스로부터 주요 값을 가져오는 데 비디오가 필수적이라고 생각하지는 않습니다. 이 리소스는 해당 리소스가 다루는 특정 목표(동작하는 토픽 커스텀 필드 또는 카테고리 커스텀 필드)를 달성하는 데 필요한 코드를 제공합니다. 비디오는 아마 @angus나 다른 누군가가 리소스를 구현하는 과정을 설명하는 내용이 될 텐데, 그건 단순한 작업이라 여기에서 바로 정리해 드릴 수 있을 것 같습니다.
분명히 말씀드리면, 이 리소스는 포럼을 커스터마이징하기 위해 사이트에 플러그 앤 플레이로 추가하는 플러그인이 아닙니다. 대신, 이 리소스는 플러그인에서 자체 커스텀 필드를 코딩하는 데 필요한 이해를 효율적으로 제공합니다.
제가 이 리소스를 사용한 방법은 다음과 같습니다:
config/settings에 원하는 필드의 이름과 유형을 추가해야 합니다. 이 리소스의 코드는 거기에서 정의된 변수를 사용합니다. 따라서 이후에 자신의 플러그인에서 코드를 작동시키기 위해 코드를 많이 커스터마이징할 필요가 없습니다. plugin.rb 및 기타 위치의 변수는 config/settings를 참조하므로, 그렇게 하면 작동할 것입니다.
config/settings를 업데이트한 후에는 코드를 따라가며 플러그인에 추가하기만 하면 됩니다:
-
plugin.rb의 코드로 시작하여, 커스텀 필드를 생성하기 위해 자신의 플러그인 plugin.rb에 해당 코드를 추가합니다.
-
다음으로 initializer (assets/javascripts/discourse/[custom-field-initiliazer])로 가서 커스텀 필드를 초기화하고 서버에 저장할 수 있게 하는 코드를 가져옵니다.
-
다음으로, 사용자가(또는 앱이 필드를 자동으로 추가하는 경우 앱이) 커스텀 필드의 값을 입력할 뷰 레이어의 양식을 여기 (assets/discourse/connectors/[plugin-outlet-name]/[your special template].hbs)에서 생성합니다.
-
@angus는 커스텀 필드 양식을 discourse 템플릿에 삽입될 플러그인 아웃렛에 추가하도록 설정해 두었습니다. 이 양식의 설정은 여기 (assets/javascripts/discourse/lib/[custom-field-name].js.es6)에 있으므로, 양식이 작동하도록 이 부분도 커스터마이징하는 것이 좋습니다.
@angus, 제가 여기서 언급한 내용에 오류가 있다면 수정해 주십시오.
위 단계를 거치면서 커스텀 필드를 설정하는 데 익숙해진 후, 저는 일부 사항을 더 커스터마이징하기 시작했습니다(예: 양식이 작동하는 방식에 대해 더 창의적으로 접근하기). 하지만 이는 수 시간의 작업을 절약해 준 매우 유용한 출발점이었습니다.
과정을 거친 후에도 몇 가지 질문이 있었지만(이전에 질문했던 것처럼), #dev에서 답변을 받는 것이 이후 진행에 가장 도움이 되는 방법인 것 같습니다.