Изменение порядка элементов бокового меню в 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: Руководство по установке Как установить тему или компонент темы

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

:bulb: Введение

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

:woman_technologist:t2: Обзор

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

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


:wrench: Установка и настройка

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

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

Настройка Описание
Sidebar menu order Настройка списка, содержащая разделы меню по умолчанию. (community — это раздел по умолчанию в верхней части боковой панели, включающий выпадающее подменю More.). Измените порядок разделов меню с помощью стрелок вверх и вниз сбоку. Также можно добавить глобально видимые пользовательские разделы — используйте slug названия меню (например, для пользовательского меню с названием 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 -> Все настройки сайта -> Chat Separate Sidebar Mode установлена в значение Always, кнопка чата будет отображаться как обычно в нижней части, а компонент проигнорирует разделы меню чата по умолчанию (chat-dms, chat-channels и chat-search).

Посмотрите другие мои материалы по Discourse
27 лайков

Это так круто. Мне очень нравится использовать категории (1), а затем настройку чата (2). Большое спасибо за вашу прекрасную работу, Лилли.

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

Примечание: я только что внес исправления для мобильных устройств в этот компонент — он начал отображать горизонтальные линии между секциями боковой панели, которые должны быть видны только на настольных компьютерах и планшетах.

2 лайка