# Как всегда отображать боковую панель как меню?

**URL:** https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859
**Category:** Development
**Created:** [13.Декабрь.2022 22:21:15 UTC](https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859 "2022-12-13T22:21:15Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [13.Декабрь.2022 22:21:15 UTC](https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859/1 "2022-12-13T22:21:15Z")

</div>

На сообществе я включил боковую панель и настроил вид панели следующим образом:

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/8/f/38f5e58306e75e62efccbb6ade84ee430ffab3fb.png)

Я всегда хочу использовать это меню панели и не переключаться между панелью и боковой панелью в зависимости от ширины просмотра. Есть ли простое объявление для этого?

---

<div class="post-metadata">

### Author: ![kris.kotlarek](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kris.kotlarek/32/176919_2.png) [@kris.kotlarek](https://meta.discourse.org/u/kris.kotlarek)
#### Post date: [14.Декабрь.2022 06:03:26 UTC](https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859/3 "2022-12-14T06:03:26Z")

</div>

В данный момент это не легко настраивается через SiteSetting.

Поведение контролируется `NarrowDesktop`:

> <https://github.com/discourse/discourse/blob/787655e276b79468fa673401b2792e259128205c/app/assets/javascripts/discourse/app/lib/narrow-desktop.js>

Возможное решение — создать плагин, который переопределяет функцию `isNarrowDesktopView`, чтобы она всегда возвращала true.

Например, файл `initializers/always-narrow-view.js`:

```javascript
import NarrowDesktop from "discourse/lib/narrow-desktop";

export default {
  name: "always-narrow-view",

  initialize(container) {
    NarrowDesktop.isNarrowDesktopView = () => true;
  }
}

```

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [14.Декабрь.2022 13:26:08 UTC](https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859/4 "2022-12-14T13:26:08Z")

</div>

Спасибо, Крис!! ☀

Я обернул это в компонент темы, и пока всё работает как по маслу ✨

> **[GitHub - nolosb/discourse-sidebar-menu-panel](https://github.com/nolosb/discourse-sidebar-menu-panel)**
>
> Contribute to nolosb/discourse-sidebar-menu-panel development by creating an account on GitHub.

Ещё немного поэкспериментирую и протестирую…

---

<div class="post-metadata">

### Author: ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)
#### Post date: [21.Декабрь.2022 10:28:10 UTC](https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859/5 "2022-12-21T10:28:10Z")

</div>

Мне очень нравится, как это работает для полностраничных макетов, предоставляя просторное боковое меню, не нарушая при этом структуру страницы:

К сожалению, я заметил, что это также заставляет меню пользователя всегда выезжать сбоку. Это не очень удобно. Думаю, что разделить эти поведения будет сложнее?

Кстати, я заметил, что у панели меню пользователя есть классы:  
`.user-menu.revamped.menu-panel.slide-in`  
А у панели бокового меню только:  
`.revamped.menu-panel.slide-in`  
По-моему, было бы полезно добавить туда отдельный класс `.sidebar-menu`.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [20.Январь.2023 10:28:47 UTC](https://meta.discourse.org/t/how-to-always-show-sidebar-as-menu-panel/248859/6 "2023-01-20T10:28:47Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
