Перестановка бокового меню в Discourse

:information_source: Сводка Позволяет изменять порядок разделов меню боковой панели по умолчанию и пользовательских разделов
:eyeglasses: Предпросмотр https://discourse.theme-creator.io/theme/Lilly/discourse-sidebar-menu-reorder
:hammer_and_wrench: Репозиторий https://github.com/Lillinator/discourse-sidebar-menu-reorder
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

Установить этот компонент темы

:bulb: Введение

Я видел множество запросов от администраторов Discourse, желающих изменить порядок разделов меню боковой панели, включая глобальные пользовательские разделы. Поскольку в настоящее время это не очень интуитивно понятно и сложно сделать с помощью CSS для большинства людей, а управление такими изменениями и внесение правок могут быть затруднительными, я создал компонент темы, который значительно упрощает эту задачу в интерфейсе администратора.

:woman_technologist:t2: Обзор

Этот компонент темы Discourse позволяет администраторам изменять порядок разделов меню боковой панели форума в интерфейсе администратора, включая все разделы по умолчанию, а также любые глобально видимые пользовательские разделы.

Компонент работает как для настольных, так и для мобильных представлений боковой панели, а также для режима выпадающего меню в заголовке (хотя в идеале он предназначен для режима боковой панели).


:wrench: Установка & Конфигурация

  • Установите этот компонент темы в соответствии с Руководством для начинающих по использованию тем Discourse.
  • Раздел community относится к верхнему разделу боковой панели по умолчанию — меню с заголовком Topics и включающему выпадающее подменю More; рекомендуется перемещать не более одного или двух разделов (по умолчанию или пользовательских) выше раздела community.
  • Не удаляйте никакие разделы по умолчанию в настройках, иначе они потеряют свой порядок (вы всегда можете добавить их обратно или сбросить настройки).
  • Лучший способ настроить этот компонент — иметь экран администратора компонента с настройкой списка изменения порядка в одном окне браузера и представление боковой панели форума как тестового пользователя в другом окне рядом; перезагружайте страницу после каждого изменения порядка разделов меню в списке.

:gear: Настройки

Настройка Описание
Sidebar menu order Настройка списка, содержащая разделы меню по умолчанию. (community — это раздел по умолчанию в верхней части боковой панели и включает выпадающее подменю More). Изменяйте порядок разделов меню с помощью стрелок вверх и вниз сбоку. Также можно добавить глобально видимые пользовательские разделы — используйте слаг названия меню (например, для пользовательского меню с названием Test Menu добавьте test-menu в настройку).

Компонент темы изначально имеет настройки по умолчанию. Администраторам необходимо добавить любые глобальные пользовательские разделы меню, которые они хотят включить в список изменения порядка, а затем изменить их порядок вместе с разделами по умолчанию.

скриншот настроек компонента по умолчанию


:camera_flash: Скриншоты

На скриншотах ниже показан раздел community и два примера пользовательских разделов меню под названиями “Dev Links” (dev-links) и “Toolbox” (toolbox) так, как они отображаются в панели администратора компонента слева и для обычного пользователя справа. Стрелки для перемещения раздела меню вверх и вниз в настройках компонента администратора показаны в маленьком красном квадрате.


Здесь настройка сконфигурирована так, чтобы раздел categories по умолчанию отображался выше раздела community (в свернутом и развернутом режимах):

Вот пример с двумя пользовательскими разделами: один под названием dev-links, расположенный выше раздела community по умолчанию, и другой под названием toolbox, находящийся ниже раздела tags по умолчанию.

Также обратите внимание на раздел под названием inbox-section на приведенном выше скриншоте администратора — это раздел Messages, который компонент Раздел сообщений для боковой панели вставляет в боковую панель (под пользовательским меню toolbox выше), что показывает, что этот компонент также можно использовать для его перемещения.

Кроме того, этот компонент темы можно использовать вместе с компонентами Меню боковой панели групп и Вложенные подкатегории (см. на скриншоте выше).


:backhand_index_pointing_right: Примечания

  • После добавления новых глобальных пользовательских разделов в настройку sidebar_menu_order пользователи форума увидят новый правильный порядок меню при перезагрузке браузера или сворачивании/разворачивании боковой панели.
  • Создание новых глобальных пользовательских разделов меню при включенном компоненте может привести к временному появлению дублирующихся разделов для администратора до тех пор, пока боковая панель не будет перерисована, либо путем обновления страницы, либо путем сворачивания и разворачивания.
  • Пользовательские пользовательские разделы меню всегда будут отображаться в нижней части боковой панели для этого пользователя, но в остальном не затрагиваются.
  • Если настройка Admin -> All Site Settings -> Chat Separate Sidebar Mode установлена в значение Always, кнопка чата будет отображаться как обычно в нижней части, а компонент проигнорирует разделы меню чата по умолчанию (chat-dms, chat-channels и chat-search).
25 лайков

It’s so cool. I really like to use the categories (1) then chat (2) setup. Thank you very much for your nice work Lilly

4 лайка

Is this still supported? I tried to install and I got the following error. I tried from here and also using the manual instructions.

Yes it is. The link in the “install this theme component” button is outdated, but the link at the top is still correct and you can use that for installing the component manually

Or you try this button

Install this theme component

2 лайка

I’ve just fixed the link in the install button in the OP so all good now.

4 лайка

I’ve come across a bit of a bug, where the specified order isn’t working when I have an unusually narrow ‘desktop’ screen - as on my folding phone.

Summary

This is how I want it to look:

   

When I have a weird sized screen (seems to be a width of 640-820 or so), I lose the order:

1 лайк

oh god the return of the 2 column sidebar. i thought that thing was gone? will have a look…

edit: i can’t repro this - when i adjust the browser size on my ipad to get the 2-column compact sidebar, it is in the correct order specified by the component. when i adjust the viewport size using the dev console, the sidebar shows it in the correct order as well (regardless of the viewport size). :woman_shrugging:t2:

4 лайка

Was indeed me being a bit thick! I was using the old component and didn’t even notice.

I have picked up one thing though - what has been called community is now called the-forum instead. Here is a PR to tidy that up in the defaults:

1 лайк

On my forum it’s still called community and here on Meta too.


I wonder how you changed it.

2 лайка

That is indeed weird! I do recall changing the text on it at some stage now I think about it. But not sure how that got into the HTML!

I’ll withdraw that PR and scratch my head a bit more. It might have to remain a ‘quirk’ of my site!

1 лайк

you should be able to do some rails commands to rename it back. if your section is indeed called the-forum, then i think this should work from the rails console:

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

definitely back up first.

3 лайка

Наконец-то попробовал это. Но раздел так и не нашёл:

Кажется, это просто останется странностью этого сайта, да?

1 лайк

@nathank — ок, я поэкспериментировал с этим на тестовом экземпляре и смог переименовать секцию the-forum, а затем вернуть название community.

Если в консоли Rails выполнить:

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

что выведется?

Я предполагаю, что результат будет примерно таким:

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

или

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

что подтвердит, что section_type = community, но с другим заголовком. Тогда мы можем выполнить:

# найти секцию сообщества по умолчанию через enum в Rails
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

Скриншот моей консоли Rails, где показано, что секция сообщества с заголовком the-forum переименована обратно в Community, а затем подтверждено изменение:

2 лайка