Перестановка бокового меню в 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 лайка

Это всё ещё поддерживается? Я попытался установить, но получил следующую ошибку. Пробовал установить как с этой страницы, так и по ручной инструкции.

Да, это так. Ссылка в кнопке «Установить этот компонент темы» устарела, но ссылка вверху по-прежнему верна, и вы можете использовать её для ручной установки компонента.

Или попробуйте эту кнопку:

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

2 лайка

Я только что исправил ссылку в кнопке установки в первом посте, так что теперь всё в порядке.

4 лайка

Я столкнулся с ошибкой: указанный порядок не работает, когда у меня необычно узкий экран «десктопа» — например, на моем складном телефоне.

Краткое описание

Вот как я хочу, чтобы это выглядело:

   

Когда у меня экран странного размера (похоже, ширина около 640–820 пикселей), порядок теряется:

1 лайк

О боже, возвращение двухколоночной боковой панели. Я думал, что эта штука уже ушла? Посмотрю…

редактирование: я не могу воспроизвести это — когда я изменяю размер браузера на своём iPad, чтобы получить компактную двухколоночную боковую панель, она отображается в правильном порядке, указанном компонентом. Когда я изменяю размер области просмотра с помощью консоли разработчика, боковая панель также показывает её в правильном порядке (независимо от размера области просмотра). :woman_shrugging:t2:

4 лайка

Действительно, я был немного глуп! Я использовал старый компонент и даже не заметил этого.

Однако я заметил одну вещь: то, что называлось community, теперь называется the-forum. Вот PR, чтобы привести это в порядок в настройках по умолчанию:

1 лайк

На моём форуме оно всё ещё называется community, и здесь, на Meta, тоже.


Интересно, как вы это изменили.

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 "Готово: переименовано в 'community'."
else
  puts "Секция не найдена."
end

Обязательно сначала сделайте резервную копию.

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 лайка