Мне нужно добавить новую кнопку в боковую панель (или в другое подходящее место — можно обсудить), которая будет переключать значение пользовательского поля. Мы настроили режим «SFW» (безопасный контент), по сути используя обратный подход. Однако, поскольку установка этого значения опциональна для пользователя, а сайт по умолчанию содержит NSFW-контент, пользователю потребуется время, чтобы зайти в настройки профиля и найти маленькую и неочевидную галочку.
Поэтому идея состоит в том, чтобы добавить кнопку с двумя состояниями (Вкл/Выкл), которая будет изменять значение пользовательского поля. По умолчанию состояние — NSFW (поле пользователя не отмечено, или 0). Второе состояние — SFW (поле пользователя отмечено).
Когда это нужно?
Мне кажется, для опытного разработчика тем или компонентов это быстрая задача Не торопитесь.
Какой потрясающий компонент темы User Field Prompt! Неважно, как часто я посещаю Discourse Meta, всегда удивительно находить что-то новое о Discourse.
Описанная задача отличается от концепции полей постов. Также она не предназначена для взаимодействия с другими компонентами темы, такими как Welcome Link Banner, о котором вы упомянули.
Максимальная кастомизация, которую я вижу сейчас, — это введение базовых вариантов настройки, таких как:
Текстовые поля Discourse для администратора, чтобы можно было создавать/обновлять/удалять кнопки на примере множества компонентов темы, таких как Custom Header Links (icons)
Администратор мог бы задать кнопке:
Имя (ID для целей CSS)
Имена SVG-иконок для обоих состояний (требуется их наличие в спрайтах font-awesome или пользовательские SVG с сайта)
Ладно, пока не пробовал, но там есть также публикация страниц.
Думаю, код может помочь получить некоторые идеи. Есть несколько компонентов, использующих поля пользователя. Более недавнее дополнение — своего рода список отслеживаемых слов для участника, который будет скрывать сообщения с указанным словом.
Также есть некоторые компоненты темы, использующие переключатель, если не ошибаюсь, в гамбургер-меню или в заголовке.
Ссылки в пользовательском заголовке, возможно, тоже будут работать.
Не уверен, но с помощью флажка, возможно, можно скопировать ссылку для этого флажка предпочтений пользователя.
Спасибо, нужно обновить адрес сайта. Клиент перешел с .ai на .com.
Идея, которую я имел в виду выше. Вы можете посмотреть исходный код подсказки поля «Пользователь», чтобы понять, какой код нужен для переключения настройки NSFW пользователя. Затем посмотрите, например, на компонент темы с переключателем Светлая/Темная тема и объедините идеи для создания переключателя, который будет управлять вашей настройкой NSFW пользователя.
Хорошо, теперь я понял. Похоже, вы изобретаете велосипед в отношении решения, о котором я упоминал в первом посте: Our solution for blurring NSFW content
Оно делает именно то, о чём вы говорите: проверяет значение поля пользователя и через JS добавляет CSS-класс. Пожалуйста, используйте в качестве основы код из этого сообщения, так как код из первого поста там опирается на устаревшие методы Discourse.
Кроме того, вы можете посмотреть это: CSS Classes for Current User's Groups, чтобы настроить внешний вид и функциональность вашего сайта в зависимости от групп пользователей
Что касается самого переключателя и вашего упоминания переключателя тёмного/светлого режима, думаю, будущим разработчикам этого компонента будет интересно изучить его. Я хочу поделиться им с общественностью, как только он будет завершён. @Lhc_fl сейчас работает над чем-то, и мы, надеюсь, сможем сначала протестировать это в продакшене сами