기본값으로 사이드바 닫기

:information_source: 요약 관리자가 그룹별로 Discourse 사이드바의 기본 동작을 제어할 수 있도록 합니다
:hammer_and_wrench: 저장소 GitHub - nathan-nz/closed-sidebar-by-default: Allows control of the default sidebar behaviour · GitHub
:question: 설치 가이드 테마 또는 테마 컴포넌트 설치 방법
:open_book: Discourse 테마를 처음 사용하시나요? Discourse 테마 사용 입문가 가이드

이 테마 컴포넌트 설치

이 간단한 테마 컴포넌트는 관리자가 그룹별로 Discourse 사이드바의 기본 동작을 제어할 수 있게 해줍니다.

해당 사용자/기기의 이전 사이드바 상태를 계속 존중하므로, 새로고침 시 일관된 경험을 제공합니다.

사용 사례

가장 일반적인 사용 사례는 캐주얼 방문자를 위한 더 깔끔하고 단순한 UI입니다. 예를 들어, Discourse Meta에 사용할 경우, 사용자는 다음 화면에 도달하게 됩니다:

다음과 같이 다소 복잡한 화면 대신에:

설정

설정은 하나뿐이며, 간단한 그룹 선택기입니다. 기본값은 anonymous_users(ID 4)이지만, 어떤 그룹을 사용해도 됩니다.

감사의 글

이 컴포넌트가 포크된 원래 테마 컴포넌트를 만들어주신 @don 님께 깊은 감사의 말씀을 드립니다:

9개의 좋아요

네, 저는 몇 달 동안 돈의 버전을 사용했고 정말 마음에 듭니다. 처음 사이트를 방문하는 신규 사용자에게는 정보량이 많아 다소 압도적으로 느껴질 수 있고, 무엇을 보고 있는지 알기 어려울 수 있습니다. 사이드바를 숨기면 UI가 조금 더 명확해집니다. 제 생각에는 사이트를 여러 번 방문한 후에는 메뉴가 필요할 때 어디를 봐야 하는지 자연스럽게 알게 됩니다.

사이드바가 기본적으로 닫혀 있는 아이디어를 좋아합니다. 두 테마 컴포넌트 사이의 차이점은 무엇인가요?

Don의 버전에는 그룹 설정이 없습니다.

2개의 좋아요

정말 감사합니다. 엄지손가락을 치켜세우고 싶었는데, 실수로 하트를 너무 많이 눌러서 "54초"를 기다려야 했습니다. 그래서 이렇게 짧은 메시지를 남깁니다.

1개의 좋아요

사이드바를 기본적으로 접어 두는 방식의 매력이 느껴집니다. 특히 공간이 중요한 작은 화면에서는 더 그렇죠. 일부 사용자는 항상 사이드바에 의존하는 반면, 다른 일부는 거의 사용하지 않으므로, 사용자 설정으로 만들거나(또는 마지막 상태를 기억하도록 하거나) 하는 것이 가장 좋은 절충안이 될 수 있습니다.

보통은 마지막 상태를 기억합니다. 하지만 이 컴포넌트는 활성화되면 그 기능을 무시합니다.

더 똑똑한 방식으로 처리할 수 있는 방법이 있을지도 모릅니다.

1개의 좋아요

안녕하세요 :waving_hand:

이 테마 컴포넌트에 대한 주제를 만들어 주셔서 감사합니다 @nathank :hugs:

요즘에는 다음과 같은 방식으로 작동할 것입니다. 이 접근 방식은 초기 로드 시에만 사이드바를 닫고, 이후에는 기본 동작(사용자 설정 기억)으로 되돌아갑니다.

import { apiInitializer } from "discourse/lib/api";

const HIDE_SIDEBAR_KEY = "sidebar-hidden";
const INITIALIZED_KEY = "closed-sidebar-by-default-initialized";

export default apiInitializer("1.8.0", (api) => {
  const keyValueStore = api.container.lookup("service:key-value-store");
  const userGroups = settings.user_in_closed_sidebar_groups;

  if (userGroups) {
    if (!keyValueStore.getItem(INITIALIZED_KEY)) {
      keyValueStore.setItem(HIDE_SIDEBAR_KEY, "true");
      keyValueStore.setItem(INITIALIZED_KEY, "true");
    }
  } else {
    if (keyValueStore.getItem(INITIALIZED_KEY)) {
      keyValueStore.removeItem(HIDE_SIDEBAR_KEY);
      keyValueStore.removeItem(INITIALIZED_KEY);
    }
  }
});
2개의 좋아요

페이지를 새로고침하면 컴포넌트가 사이드바를 다시 숨깁니다. 기본 상태로 시작하되, 이후의 변경 사항은 기억할 수 있으면 좋겠습니다.

1개의 좋아요

@Don 님, 정말 감사합니다!

이 내용을 TC에 적용했는데, 설명대로 완벽하게 작동합니다. 확실히 개선되었습니다!!