# 默认关闭侧边栏

**URL:** <https://meta.discourse.org/t/closed-sidebar-by-default/408578>\
**Category:** Theme component\
**Tags:** sidebar\
**Created:** [2026年七月27日 06:13 UTC](https://meta.discourse.org/t/closed-sidebar-by-default/408578 "2026-07-27T06:13:08Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)\
**Post date:** [2026年七月29日 05:57 UTC](https://meta.discourse.org/t/closed-sidebar-by-default/408578/8 "2026-07-29T05:57:59Z")

</div>

你好 👋

感谢 @nathank 为这个主题组件创建话题！ 🤗

> [@nathank](#):
>
> 通常它会记住最后的状态。但是，此组件在激活时会忽略这一点。

我认为现在采用类似以下的方法应该可以生效。这种方法仅在初始加载时关闭侧边栏，之后将恢复为默认行为（记住用户的偏好设置）。

```js
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);
    }
  }
});

```

---

_[View the full topic](https://meta.discourse.org/t/closed-sidebar-by-default/408578)._
