Canapin
(Coin-coin le Canapin)
1
[관리자 알림] 테마 ‘_Base’에 업데이트가 필요한 코드가 포함되어 있습니다. (id:discourse.script-tag-discourse-plugin) (자세히 알아보기)
저의 포럼 중 하나에서는 이 메시지를 단순히 내 JS 스크립트를 새로운 JS 커스터마이징 탭으로 이동시켜 제거했습니다.
다른 포럼에서는 그렇게 쉽게 해결되지 않습니다.
태그를 허용하는 카테고리에서만 컴포저의 태그 필드를 표시하는 오래된 오버라이드입니다:
이 스크립트는 메타에 게시된 유사하고 오래된(2019년 이전) 수정 사항에 크게 기반하고 있지만, 더 이상 원본 게시물을 찾을 수 없습니다.
어쨌든, 여기에는 하나의 질문에 두 가지가 포함되어 있습니다:
-
이 내용을 JS 탭으로 올바르게 이동하는 방법은 무엇입니까? 가능합니까, 아니면 테마 구성 요소를 생성해야 합니까?
-
특정 카테고리에서만 컴포저의 태그 선택기를 숨기거나 표시하는 더 우아한 방법이 있습니까? 저는 포럼에서 태그를 단 하나의 카테고리(광고 카테고리)에만 사용하고 있으며, #search와 #offer 태그를 사용합니다
body의 카테고리 클래스에 따라 태그 필드를 표시/숨기도록 CSS를 사용하는 것도 방법이지만, 그것이 더 우아한 방식인지는 논쟁의 여지가 있습니다 
renato
(Renato Atilio)
3
스태프에게는 해결책이 되지 않습니다 , 하지만 태그를 해당 카테고리로 제한하면, 다른 카테고리에서 (스태프가 아닌 사용자에 의해) 사용할 수 없게 됩니다. 카테고리 /edit/tags 화면에서:
위와 같이 지정된 태그 및 태그 그룹은 이 카테고리와 그것들을 함께 지정하는 다른 카테고리에서만 사용할 수 있습니다. 다른 카테고리에서는 사용할 수 없습니다.
Canapin
(Coin-coin le Canapin)
5
오랜만이어서 어떻게 동작하는지 확인해 보았습니다.
- 새 주제를 생성할 때, 선택된 카테고리와 관계없이(관리자를 제외한 사용자에게 사용 가능한 태그가 없는 카테고리일 경우에도) 작성기에 태그 입력 필드가 표시됩니다. 저는 이를 방지하고 싶습니다.
- CSS만으로는 해결할 수 없습니다. 작성기는 어떤 페이지에서든 열릴 수 있으며, 작성기의 태그 입력 필드를 숨기는 데 도움이 되는 원하는 카테고리를 대상으로 하는 상위 CSS 선택자가 없기 때문입니다. 이것이 제가 JavaScript를 사용한 이유라고 생각합니다.
따라서 제가 무언가를 놓치고 있지 않다면, 제 목표를 달성하기 위해 여전히 스크립트가 필요합니다.
이 기능에 대한 원래의 Contribute > Feature 주제는 여기 있었습니다:
이 기능이 개발되기에 충분한 관심을 받지 못했고, sam에 따르면 여기서는 #pr-welcome이 원하지 않는다고 합니다.
결국 커스텀 JS 솔루션(그리고 나서 수정해야 하는)에 머물러 있게 되었습니다 
david
(David Taylor)
6
단순히 복사/붙여넣기하면 작동할 수 있습니다. JS 탭의 코드는 <script type='text/discourse-plugin'>와 정확히 동일한 방식으로 실행됩니다. 작동하지 않는다면 코드를 공유해 주시겠습니까?
약간의 현대적인 CSS를 사용하면 가능합니다:
.d-editor-container:has(.category-input .select-kit-header[data-name="Support"]) .tags-input {
display: none !important;
}
^^ 위 코드는 Meta에서 “Support” 카테고리의 태그 입력을 숨깁니다.
논리를 반대로 하려면 [data-name="Support"]를 :not(data-name="Support")로 교체할 수 있습니다.
Canapin
(Coin-coin le Canapin)
7
아니, 정말! 내 2012년 CSS 실력이 더는 역부족인 것 같다. 2012년이 마치 어제인 것 같은데, 좀 이상하지 않은가?
다음과 같이 작성해 보았다.
.d-editor-container:not(:has(.category-input .select-kit-header[data-name="Trading Post"])) .tags-input {
display: none;
}
이렇게 하면 Trading Post를 제외한 모든 카테고리에서 숨겨진다.
모두 감사합니다!