사이드바 메뉴 순서 변경

:information_source: 요약 기본 및 사용자 정의 사이드바 메뉴 섹션의 순서를 변경할 수 있습니다
:eyeglasses: 미리보기 https://discourse.theme-creator.io/theme/Lilly/discourse-sidebar-menu-reorder
:hammer_and_wrench: 저장소 https://github.com/Lillinator/sidebar-menu-reorder
:question: 설치 가이드 테마 또는 테마 컴포넌트 설치 방법

이 테마 컴포넌트 설치

:bulb: 소개

사이드바 메뉴 섹션, 특히 전역 사용자 정의 섹션의 순서를 변경하고 싶어하는 Discourse 관리자 요청을 여러 번 확인했습니다. 현재 CSS를 통해 이를 수행하는 것은 대부분의 사용자에게 직관적이지 않고 복잡하며, 관리 및 수정이 어려운 경우가 많습니다. 이에 따라 관리자 UI에서 이 작업을 훨씬 쉽게 수행할 수 있도록 테마 컴포넌트를 제작했습니다.

:woman_technologist:t2: 개요

이 Discourse 테마 컴포넌트는 관리자가 관리자 사용자 인터페이스에서 포럼의 사이드바 메뉴 섹션 순서를 변경할 수 있게 해줍니다. 이는 기본 섹션과 전역으로 표시되는 모든 사용자 정의 섹션을 포함합니다.

이 컴포넌트는 데스크톱 및 모바일 사이드바 뷰, 그리고 헤더 드롭다운 모드 모두에서 작동합니다(다만, 사이드바 모드를 위해 최적화되었습니다).


:wrench: 설치 및 설정

  • Discourse 테마 사용 입문 가이드에 따라 이 테마 컴포넌트를 설치합니다.
  • community 섹션은 사이드바의 기본 상단 섹션을 의미하며, Topics 헤더와 More 드롭다운 하위 메뉴를 포함합니다. community 섹션 위에 기본 또는 사용자 정의 섹션을 1~2개 이상 올리는 것은 권장되지 않습니다.
  • 설정에서 기본 섹션을 삭제하지 마세요. 삭제하면 순서가 어긋날 수 있습니다(언제든 다시 추가하거나 설정을 초기화할 수 있습니다).
  • 이 컴포넌트를 설정하는 가장 좋은 방법은 컴포넌트 관리자 화면(순서 변경 목록 설정 포함)을 하나의 브라우저 창에서, 그리고 테스트 사용자로 포럼 사이드바 뷰를 옆에 있는 다른 창에서 확인하는 것입니다. 목록에서 메뉴 섹션 순서를 변경할 때마다 페이지를 새로고침하세요.
  • 컴포넌트 관리자 설정에서 사용자 정의 섹션은 슬러그(slug) 명명 규칙을 사용해야 하며, 그렇지 않으면 무시됩니다(예: "Custom Menu Name"의 경우 custom-menu-name, "Useful Links"의 경우 useful-links 등).

:gear: 설정

설정 설명
Sidebar menu order 기본 메뉴 섹션을 포함하는 목록 설정입니다. (community는 사이드바의 기본 상단 섹션이며 More 드롭다운 하위 메뉴를 포함합니다.) 측면의 위/아래 화살표를 사용하여 메뉴 섹션의 순서를 변경합니다. 전역으로 표시되는 사용자 정의 섹션도 추가할 수 있습니다 - 메뉴 이름 슬러그를 사용하세요(예: Test Menu라는 제목의 사용자 정의 메뉴의 경우 설정에 test-menu를 추가).

테마 컴포넌트는 기본적으로 기본 설정을 사용합니다. 관리자는 순서 목록에 혼합하려는 전역 사용자 정의 메뉴 섹션을 추가한 다음, 기본 섹션과 함께 순서를 다시 정렬해야 합니다.

기본 컴포넌트 설정 스크린샷


:camera_flash: 스크린샷

아래 스크린샷은 community 섹션과 “Dev Links”(dev-links), “Toolbox”(toolbox)라는 두 개의 예시 사용자 정의 메뉴 섹션이 왼쪽의 컴포넌트 관리자 패널과 오른쪽의 일반 사용자에게 어떻게 표시되는지 보여줍니다. 컴포넌트 관리자 설정에서 메뉴 섹션을 위/아래로 이동하는 화살표는 작은 빨간색 상자에 표시되어 있습니다.


여기서는 설정이 기본 categories 섹션을 community 섹션 위에 표시하도록 구성되었습니다(접힘 및 펼침 모드):

다음은 두 개의 사용자 정의 섹션을 사용한 예시입니다: 하나는 기본 community 섹션 위에 있는 dev-links이고, 다른 하나는 기본 tags 섹션 아래에 있는 toolbox입니다.

또한, 위 관리자 스크린샷에서 inbox-section이라고 표시된 섹션을 주목해 보세요. 이는 Messages section for sidebar 컴포넌트가 사이드바에 삽입하는 Messages 섹션입니다(위에서 toolbox 사용자 정의 메뉴 아래). 이 컴포넌트를 사용하여 해당 섹션의 위치도 이동할 수 있음을 보여줍니다.

추가로, 이 테마 컴포넌트는 Group sidebar menusIndented subcategories 컴포넌트와 함께 사용할 수 있습니다(위 스크린샷 참조).


:backhand_index_pointing_right: 참고 사항

  • sidebar_menu_order 설정에 새로운 전역 사용자 정의 섹션을 추가한 후, 포럼 사용자는 브라우저를 새로고침하거나 사이드바를 접었다 펼쳤을 때 새로운 올바른 메뉴 순서를 확인하게 됩니다.
  • 이 컴포넌트가 활성화된 상태에서 새로운 전역 사용자 정의 메뉴 섹션을 생성하면, 사이드바가 다시 렌더링될 때까지(페이지 새로고침 또는 접기/펼치기) 관리자에게 일시적으로 중복된 섹션이 표시될 수 있습니다.
  • 사용자가 생성한 사용자 정의 메뉴 섹션은 해당 사용자의 사이드바 하단에 항상 표시되며, 그 외에는 영향을 받지 않습니다.
  • Admin -> All Site Settings -> Chat Separate Sidebar Mode 설정이 Always로 설정되어 있으면, 채팅 버튼은 평소와 같이 하단에 표시되며, 컴포넌트는 기본 채팅 메뉴 섹션(chat-dms, chat-channels, chat-search)을 무시합니다.

제 기타 Discourse 관련 작업 보기
29개의 좋아요

정말 멋진데요. 카테고리(1)를 먼저 선택하고 그다음 채팅(2)으로 넘어가는 방식을 정말 좋아해요. 릴리, 좋은 작업 정말 감사합니다.

4개의 좋아요

이것이 여전히 지원되나요? 설치를 시도했는데 다음과 같은 오류가 발생했습니다. 여기에서 시도해 보았고, 수동 설명서도 사용했습니다.

네, 맞습니다. “이 테마 컴포넌트를 설치하세요” 버튼에 있는 링크는 오래되었지만, 상단의 링크는 여전히 정확하므로 이를 사용하여 컴포넌트를 수동으로 설치할 수 있습니다.

아니면 이 버튼을 시도해 보세요

이 테마 컴포넌트를 설치하세요

2개의 좋아요

OP의 설치 버튼에 있는 링크를 방금 수정해서 이제 문제가 해결되었습니다.

4개의 좋아요

제가 접이식 폰처럼 비정상적으로 좁은 ‘데스크톱’ 화면을 사용할 때 지정된 순서가 작동하지 않는 버그를 발견했습니다.

요약

이렇게 보이길 바랍니다:

   

화면 크기가 이상할 때(폭이 대략 640~820px인 것 같습니다), 순서가 유지되지 않습니다:

1개의 좋아요

아니, 2열 사이드바가 돌아왔네. 그거 사라진 줄 알았는데? 한번 확인해볼게…

수정: 제 환경에서는 재현이 안 돼요 - 아이패드에서 브라우저 크기를 조정해서 2열 컴팩트 사이드바를 만들면 컴포넌트에서 지정한 순서대로 올바르게 표시됩니다. 개발자 콘솔로 뷰포트 크기를 조정해도 사이드바가 올바른 순서로 표시되네요 (뷰포트 크기와 무관하게). :woman_shrugging:t2:

4개의 좋아요

정말 제가 좀 둔했던 거였네요! 옛날 컴포넌트를 사용 중이었는데, 그걸 전혀 눈치채지 못했습니다.

다만 한 가지 알아챈 것이 있습니다. community라고 불리던 것이 이제 the-forum으로 변경되었습니다. 기본값을 정리하기 위한 PR을 올립니다:

1개의 좋아요

제 포럼에서는 여전히 community라고 표시되고, 여기 메타에서도 마찬가지입니다.


어떻게 변경하셨는지 궁금합니다.

2개의 좋아요

정말 이상하네요! 생각해보니 어느 시점에 그 텍스트를 변경한 적이 있었던 것 같습니다. 하지만 그게 어떻게 HTML에 들어갔는지는 잘 모르겠어요!

그 PR은 철회하고 좀 더 고민해볼게요. 제 사이트의 '특징’으로 남을지도 모르겠네요!

1개의 좋아요

rails 명령어를 사용하여 원래 이름으로 되돌릴 수 있어야 합니다. 해당 섹션이 실제로 the-forum이라면, rails 콘솔에서 다음을 실행하면 작동할 것으로 생각합니다:

cd /var/discourse
./launcher enter app
rails c
section = SidebarSection.find_by(title: 'the-forum', public: true)
if section
  section.update!(title: 'community')
  puts "Done: renamed to 'community'."
else
  puts "Section not found."
end

반드시 먼저 백업하세요.

3개의 좋아요

드디어 (마침내) 이걸 시도해 보았습니다. 하지만 해당 섹션을 찾지 못했네요:

이건 그냥 사이트의 특이점(quirk)으로 남겨두어야 하는 게 아닐까요?

1개의 좋아요

@nathank - 네, 테스트 인스턴스에서 이것을 직접 테스트해 보았고, 섹션을 the-forum으로 이름 변경한 뒤 다시 community로 되돌리는 데 성공했습니다.

Rails 콘솔에서 다음을 실행하면:

SidebarSection.where(public: true).pluck(:id, :title, :section_type)

무엇이 출력됩니까?

아마도 다음과 같은 결과가 나와야 할 것 같습니다:

=> [..., [1, "the-forum", "community"]]

또는

=> [..., [1, "The Forum", "community"]]

이는 제목이 다르지만 section_typecommunity임을 확인시켜 줄 것입니다. 그러면 다음을 수행할 수 있습니다:

# rails enum을 통해 기본 커뮤니티 섹션 찾기
section = SidebarSection.find_by(section_type: :community)

# 폴백: 타입으로 찾지 못하면 특정 커스텀 제목을 찾아보기
section ||= SidebarSection.find_by(title: 'the-forum', public: true)

if section
  section.update!(title: 'Community')
  puts "성공: 섹션이 'Community'로 이름이 변경되었습니다."
else
  puts "오류: 섹션을 찾을 수 없습니다."
end

제목이 the-forum인 커뮤니티 섹션을 보여주고 이를 다시 Community로 변경한 뒤, 변경이 제대로 되었는지 확인하는 제 Rails 콘솔 스크린샷:

2개의 좋아요

참고: 이 컴포넌트에 대한 모바일 관련 수정 사항을 방금 푸시했습니다. 사이드바 섹션 사이에 표시되는 수평선이 데스크톱/태블릿 뷰에서만 표시되어야 하는데, 모바일에서도 렌더링되던 문제가 있었기 때문입니다.

2개의 좋아요

저는 이 멋진 테마 컴포넌트를 릴리의 또 다른 멋진 Group Sidebar Menus 컴포넌트와 함께 사용하고 있습니다. 제 사용 사례는 클라이언트를 위한 커스텀 메뉴를 만들어 조직 내 모든 구성원이 자신에게 관련 있는 빠른 링크를 커뮤니티 섹션 바로 위, 상단에 볼 수 있도록 하는 것입니다.

향후 이 기능을 사용할 분들(저를 포함하여)을 위해 참고할 점이 하나 있습니다. 사이드바 섹션 이름은 매우 민감하며 정확히 일치해야 합니다. 이름의 공백은 대시(-)로 변환됩니다. 즉, "Doing business"는 "doing-business"가 됩니다.

이것까지는 모두 잘 작동하지만, 그룹 사이드바 섹션을 만들 때 실수로 그룹 이름 끝에 공백을 넣게 되어 "doing-business-"가 되어버렸습니다. 개발자 도구를 통해 문제를 해결하는 데 꽤 시간이 걸렸습니다.

이 기능들은 저에게 매우 중요하므로, 모든 디스커스 사이트에서 더 쉽게 접근하고 사용할 수 있도록 코어에 추가되는 것을 진심으로 고려해 주셨으면 합니다. :folded_hands:

2개의 좋아요

토비안, 감사합니다. 실제로 설정 설명에서 섹션 이름 슬러그를 사용하라고 언급했으며, 스크린샷 예시에서도 이를 나타내고 있습니다(예: “dev-links” = DEV LINKS).

아마 설정 설명 외에 다른 곳에도 이 내용을 추가해야 할 것 같습니다. :thinking:

수정: 완료

6개의 좋아요

이 테마 컴포넌트를 사용하여 사이드바에서 동일한 슬러그를 사용하거나 순서를 변경할 수 있을까요?

내 사용 사례는 무료 사용자와 구독 사용자 간에 다른 수준의 접근 권한을 가지되, 동일한 제목을 표시하는 것입니다.

정확히 어떤 의미인지 잘 모르겠네요. 이건 단순히 섹션의 순서를 바꾸는 것뿐이며, 슬러그 이름은 고유해야 합니다. 서로 다른 이름을 붙이고 Group Sidebar Menus 와 함께 사용하세요.

이해합니다. 저는 ‘새로운’ 사이드바 섹션에 아주 유사한 이름을 붙여야 합니다.

같은 내비게이션 바 섹션에서 두 개의 다른 링크를 사용하여 각 내용을 구분하려 하고 있습니다. '접근 권한이 없습니다’라는 일반적인 동작 방식이 제게는 조금 어렵게 느껴집니다.

이 컴포넌트와 관련하여 이것이 무슨 의미인지 전혀 모르겠습니다