before-script-load 영역에 JavaScript를 주입하고 싶습니다.
이를 테마 또는 테마 컴포넌트를 통해 구현할 수 있을까요?
before-script-load 영역에 JavaScript를 주입하고 싶습니다.
이를 테마 또는 테마 컴포넌트를 통해 구현할 수 있을까요?
정확한 그 위치(실행 순서)에서 실행되어야 하나요? 브라우저는 순서와 관계없이 head 태그 내의 모든 스크립트를 로드합니다. admin-customize-themes의 CSS/HTML 편집 섹션으로 이동하여 head 태그 영역에 스크립트를 추가할 수 있습니다. 테마가 호스팅되어 있어 커스터마이징을 지원하지 않는 경우, 테마 컴포넌트(테마가 본인의 것이라면 저장소의 head 태그 파일)를 통해 추가할 수 있습니다.
해당 페이지는 프로덕션에서 사용되지 않는 개발용 페이지입니다.
Discourse의 실제 페이지에 관해서는, 테마가 head 요소에 콘텐츠를 주입하는 데에는 문제가 없으나, 콘텐츠가 삽입되는 정확한 위치에 대한 제어는 거의 불가능합니다. 다만 @Lilly가 말했듯이 이는 문제가 되지 않을 것입니다.
정확히 무엇을 달성하고 싶은지에 대해 좀 더 자세한 정보를 알려주시면 몇 가지 제안을 드릴 수 있을 것입니다.
초기화 파일(initializer)에 넣으려는 것 같습니다.
Split up theme Javascript into multiple files 를 참고해 보세요.
하지만 Falco님이 그 부분에 대해 저보다 훨씬 더 잘 아실 겁니다.
@Lilly, @Falco, @pfaffman 감사합니다.
이것이 제 주요 문제라고 생각합니다.
예를 들어, dataLayer 객체가 다른 어떤 스크립트보다 항상 페이지에 먼저 추가되도록 해야 합니다. 특히 GTM이 로드되기 전에(내장 방식이든 사용자 정의 로더를 사용하든) 처리되어야 합니다.
로컬 개발 환경에서는 initializes, pre-initializers 및 head_tag.html 템플릿을 활용하여 시도해 보았습니다.
또한 head_tag.html 템플릿 내부에서 제 코드를 <script></script> 태그와 <script type="text/discourse-plugin" version="0.1"></script> 태그로 감싸서 적용해 보았습니다.
각 방법을 사용하면 서로의 부트스트랩 순서를 확인할 수는 있습니다. 하지만 이 밖에는 로드되는 스크립트의 순서를 제어할 수 있는 방법이 없는 것 같습니다.