Управление отображением меню навигации (боковая панель)

:information_source: Краткое описание Позволяет отображать разделы и ссылки для сотрудников, авторизованных и анонимных пользователей
:hammer_and_wrench: Репозиторий https://github.com/Lillinator/navigation-menu-display-control
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

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

Описание

Компонент темы «Контроль отображения меню навигации» позволяет отображать различные стандартные разделы и ссылки только для сотрудников и/или только для авторизованных пользователей. Вы также можете указать пользовательские разделы или ссылки (включены имена-заполнители). Кроме того, существует настройка для отображения пользовательского раздела меню только для анонимных пользователей, а также настройки для определения порядка стандартных разделов (категории, теги, чат, каналы, сообщения). Разделы и ссылки в настройках представляют собой списки, которые можно редактировать с использованием существующих разделов (см. скриншоты ниже), а также добавлять любое количество пользовательских разделов или ссылок.

Настройки

:point_right:t2: Для пользовательских разделов меню они должны быть видны глобально при их настройке (должен быть установлен флажок «Сделать этот раздел общедоступным и видимым для всех»).

Верхний раздел в коде называется «community», поэтому, если вы хотите скрыть этот раздел, используйте имя раздела «community». Вы можете использовать ссылки, установленные с помощью плагинов, например, ссылки на документацию, годовщины и дни рождения.

Существуют также настройки, которые переопределяют друг друга: наличие конкретной ссылки в разделе «Ещё», видимой только авторизованным пользователям, будет переопределено настройкой выпадающего меню «Ещё», видимой только сотрудникам.

Название настройки Описание
show these sections for staff only Список разделов, отображаемых только для сотрудников. Можно включать пользовательские разделы с форматом именования slug «Staff Menu = staff-menu».
show these sections for logged-in only Список разделов, отображаемых только для авторизованных пользователей. Можно включать пользовательские разделы с форматом именования slug «User Menu = user-menu».
show these links for staff only Список ссылок, отображаемых только для сотрудников. Можно включать пользовательские ссылки с тем же регистром («Staff Link» = «Staff Link»).
show these links for logged-in only Список ссылок, отображаемых только для авторизованных пользователей. Можно включать пользовательские ссылки с тем же регистром («User Link» = «User Link»).
show more for staff only Флажок для отображения выпадающего раздела «Ещё» только для сотрудников.
show more for logged-in only Флажок для отображения выпадающего раздела «Ещё» только для авторизованных пользователей.
show custom for anon only Текстовое поле для пользовательского раздела меню, отображаемого только для анонимных пользователей (скрывается для авторизованных пользователей).
show navigation menu to logged-in only Флажок для отображения всего бокового меню навигации только авторизованным пользователям (скрывается от анонимных пользователей).
hide custom menus globe icon Скрыть значок глобуса от сотрудников для пользовательских разделов меню (по умолчанию не виден не-сотрудникам).
default menu section ordering Позволяет изменять порядок стандартных разделов меню (не применяется к пользовательским меню)

Скриншоты

Настройки для разделов только для сотрудников и авторизованных пользователей

Настройки для ссылок только для сотрудников и авторизованных пользователей

Настройки для раздела «Ещё», пользовательского раздела меню только для анонимных пользователей, значка глобуса, скрытия всего меню навигации и изменения порядка стандартных разделов меню


Для пользовательских разделов бокового меню навигации, специфичных для групп, пожалуйста, используйте компонент темы Group Menu Sections.

24 лайка

Добавлен раздел для изменения порядка разделов меню по умолчанию.

5 лайков

Я не думаю, что функция скрытия ссылок работает корректно в данный момент.

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

Однако официальные ссылки, похоже, требуют нижнего регистра. Возможно, они обрабатываются иначе.

Тем не менее — они работают, если используется полный текст заголовка (с пробелами и заглавными буквами). Возможно, нужно изменить только исходный пост (можно ли его викифицировать?) и инструкции в TC. Или, возможно, требуется изменение ядра для обеспечения согласованности.

2 лайка

Спасибо, Нейтан. Да, там что-то изменилось. Посмотрю на это в выходные.

1 лайк

Хорошо, компонент всё ещё работает корректно, но формат имени класса для пользовательских ссылок изменился, поэтому мне пришлось внести некоторые изменения в документацию полей компонента и в исходный пост. Пожалуйста, обновите компонент темы.

В отличие от пользовательских разделов меню, для пользовательских ссылок имена в настройках компонента должны совпадать по регистру с их фактическими пользовательскими названиями. Конечно, стандартные названия должны оставаться строчными, чтобы всё было ещё более запутанным, ха-ха. :grin:

Например, если я хочу отобразить конкретную пользовательскую ссылку «GitHub Repo» только для авторизованных пользователей:

Я введу то же название ссылки в настройке показывать эти ссылки только для авторизованных пользователей в компоненте темы:

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

Обратите внимание, что для пользовательских разделов меню (не ссылок) соглашение об именовании осталось прежним — это всё ещё строчный стиль URL-адресов (например, «Custom Menu Name» = custom-menu-name).

Спасибо ещё раз, что обратили моё внимание на это, @nathank :hugs:

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

5 лайков

Привет, Лилли,

Я заметил:

  • Я не могу изменить порядок секций, независимо от того, использую ли я имя человека или слаг
  • Весь боковой панель скрывается для гостей, даже когда я не отмечал этот чекбокс
1 лайк

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

Да, я подтверждаю, что функция скрытия для анонимов не работает. Я исправлю это сегодня. Спасибо, что сообщили.

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

1 лайк


Не отображает ли кто-либо в режиме без входа в систему?

Это должно быть переключатель…

image

1 лайк

посмотрите мой пост выше вашего :slight_smile:

редактирование: возможно, мне стоит подумать об их удалении и просто использовать скриншот для демонстрации. :thinking:

4 лайка

Хорошо, я сделал это и отредактировал первое сообщение. Используйте скриншоты в качестве руководства для названий разделов по умолчанию и ссылок.

2 лайка

Я думаю, что CSS для раздела ⋮ Ещё изменился (btn-flat больше нет)

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

.anon button.sidebar-more-section-links-details-summary {
    display: none;
}

Вот соответствующий PR:

3 лайка

Это уже слито. Спасибо ещё раз, Натан :hugs:

Я также исправил скрытие всей боковой панели для анонимной функции, которая работала с ошибками.

4 лайка

Привет!

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

Не могли бы вы помочь мне?

Я предложу вам три разных способа решения этой задачи:

1. Используйте этот компонент темы

Создайте пользовательское боковое меню со ссылкой на /login и используйте эту настройку в компоненте темы:


2. Используйте CSS в новом/существующем теме или компоненте

Если вы просто хотите добавить ссылку в верхнем разделе под «Мои сообщения», вы можете добавить ссылку на /login через ссылку «Еще — Настроить этот раздел» следующим образом. Например, если ссылка называется «Вход или регистрация»:

Затем перейдите к теме или компоненту темы и отредактируйте HTML/CSS следующим образом:

Имейте в виду, что ссылки в этом верхнем разделе чувствительны к регистру:

.sidebar-section-link-wrapper[data-list-item-name="Login or Signup"] {
  display: none;
}

.anon .sidebar-section-link-wrapper[data-list-item-name="Login or Signup"] {
  display: block;
}

Результат в режиме инкогнито / для анонимного пользователя:


3. Используйте следующий компонент темы

Да, я давно создал специальный компонент темы, который делает именно это. Он также работает в обратном направлении — отображает раздел только для участников (вошедших пользователей).

3 лайка

Понял. Большое спасибо за подробные инструкции.

2 лайка