플러그인에서 공용 폴더(html용)는 어디에 있나요?

실험 중인 플러그인에서 기본 HTML을 일부 변경하고 싶습니다(모든 변경 사항을 하나의 플러그인에 모으는 것이 편리할 것입니다). 만약 플러그인 대신 관리자 대시보드를 사용했다면, 이 HTML은 테마 커스터마이저의 header 섹션에 넣게 될 것입니다.

테마의 경우 common이라는 이름의 폴더가 직접 존재하며, header.html과 같은 다양한 파일이 들어 있습니다.

플러그인의 공용 스타일시트는 plugin/assets/stylesheets/common에 넣을 수 있다는 것은 알고 있습니다. 그렇다면 이 header.html 파일을 플러그인 어디에 두어야 할까요?

‘html’ 안에 무엇이 있나요?

스크립트는 일반적으로 초기화 파일(initializer)에 배치하거나, 컴포넌트에서 이벤트로 트리거하도록 설정합니다.

플러그인 API 호출은 초기화 파일에 배치해야 합니다.

템플릿 변경 사항은 플러그인 커넥터에 연결하는 것이 일반적이며(혹은 정말 절박한 경우에만: 템플릿 폴더에서 오버라이드),

초기화 파일에서 위젯을 장식(decorate)하거나 다시 열(reopen) 수도 있습니다.

사실상 수정하는 대상이 웹 페이지가 아니라 웹 앱이므로, 어디에도 ‘맨 html(bare html)’을 넣을 필요가 없어야 합니다.

어쨌든 여러 플러그인과 TC를 함께 실행하는 것에는 특별한 해가 되지 않을 것입니다 …

우리는 테마와 커스터마이저에 새로운 HTML을 계속 넣고 있습니다. 저는 테마가 아닌 플러그인에 이 기능을 추가하고 싶습니다. 이렇게 하면 단일 코드베이스를 유지할 수 있기 때문입니다.

테마를 만들 경우 ‘common’ 폴더의 "header"에 넣을 HTML을, 플러그인에서는 어디에 배치해야 할까요?

솔직히 말하면 직접적인 대응어가 없습니다.

그리고 꼭 필요하지도 않아요.

하려는 내용을 그대로 이식하면 됩니다.

CSS의 경우, 플러그인에서 이에 해당하는 경로는 [plugin]/assets/stylesheets/common/[file.scss]입니다.

이 형식에 맞춰 [plugin]/assets/views/layouts/common/header.html 위치에 파일을 추가해 보았지만 작동하지 않았습니다(단순히 views/header.html로만 하는 것도 작동하지 않았습니다).

템플릿을 수정할 수는 있지만, 테마에서처럼 header.html(또는 이에 해당하는 파일)에서 간단한 HTML 변경만 하면 되는 방식이 좋겠습니다. 예를 들어, 다음 코드를 플러그인(이미 복잡한 서버 측 작업을 수행하고 있어 플러그인이 필요한 경우)의 어디에 배치해야 할까요?

플러그인에서와 테마에서와 같은 작업을 수행하는 방식의 차이도 혼란스럽습니다. 해당 기능을 테마 컴포넌트로 처리하는 것도 방법이지만, 빠른 해결책보다는 최선의 답변을 찾고 계신 것 같습니다. (물론 해당 기능을 분리해 독립적으로 유지보수하는 데에는 몇 가지 장점이 있습니다.)

플러그인의 plugin.rb 파일에 포함하려는 파일을 include하는 한 줄을 추가해야 한다고 생각합니다. 저는 discourse GitHub 저장소의 all-the-plugins라는 저장소를 클론한 뒤, 거기서 예를 grep으로 찾아보는 방식을 사용합니다.

좋아요. 감사합니다. 네, 아마도 현재 플러그인에서 테마에서처럼 HTML을 쉽게 수정하는 직관적인 방법이 없는 것 같습니다. HTML을 수정하려면 플러그인의 templates/connectors 디렉터리로 들어가야 합니다(매우 복잡하지는 않지만, common/header.html과 같은 테마의 단순한 구조와는 다릅니다).

plugin.rb 파일을 확인해서, 일반적인 템플릿/컴포넌트 경로를 따르는 것보다 현재 이 방식이 더 쉬운지 살펴볼게요.

How to override a template.hbs from a plugin - #4 by tshenry 링크를 확인해 보세요. 찾으시는 마법이 바로 거기에 있는 것 같습니다.

제가 말한 위치는 아니지만, 올바른 이름을 붙여 assets 트리에 넣으면 됩니다. 이해하기 전까지는 불가능해 보이지만, 한번 이해하면 완전히 자명해집니다.

수정: @JQ331. 어젯밤 플러그인에서 여러분이 원하시는 작업을 수행한 것 같다는 생각이 갑자기 들었습니다. 하지만 제가 너무 서툴러서 그것이 여러분이 찾으시는 것임을 깨닫지 못했습니다. GitHub - literatecomputing/discourse-max-topics-per-month · GitHub 를 참고해 보세요. 매우 단순하기 때문에 예제를 찾는 데 방해가 되는 요소가 거의 없습니다.