Как создать тему, доступную не только администраторам?
Не уверен, что понимаю, что вы имеете в виду. Не могли бы вы рассказать немного подробнее?
В моём форуме возникает много проблем. Я уже писал об этом на мета-форуме. Поскольку в Discourse нет возможности отключить опасные функции модераторов, я применил временное решение через CSS, чтобы скрыть опции, которые могут навредить моему форуму и к которым у них есть доступ. Однако после применения CSS-правки у меня самого исчезли такие возможности, как просмотр IP-адресов, блокировка пользователей, удаление всех сообщений и т. д. Я убрал эти изменения из всех тем, но хотел бы оставить одну тему без CSS-правок, чтобы видеть эти опции, при этом использовать эту тему мог бы только я.
Не понимаю, зачем вы используете CSS и темы для управления модераторами, но так делать не следует. Используйте уровни доверия для назначения модераторов категорий и выбирайте модераторов более тщательно. Скорее всего, вы создаёте себе дополнительные проблемы, пытаясь ограничить функции модераторов через CSS и темы.
Я решил все свои проблемы, изменив роли модераторов через CSS. Это очень сложная ситуация, и единственным реальным решением стало именно это. Я уже пробовал модерацию по категориям, но для моего форума это не подходило — это не отвечало потребностям. Единственным способом решить мои проблемы стала модификация через CSS. Поскольку Discourse предоставляет администраторам те же опции модерации, что и модераторам, это было единственным решением. Но теперь мне нужен способ использовать тему без CSS-модификаций, чтобы мне не приходилось отключать их каждый раз при её использовании.
Я расскажу вам немного о том, что произошло: я живу в Бразилии, где насчитывается 214,3 миллиона жителей, большинство из которых безработные и не имеют покупательной способности. Многие люди используют интернет как средство развлечения, поэтому мой форум вписывается в эту нишу. Однако существование моего форума сильно угрожает другому форуму, который уже неоднократно совершал на него атаки, подкупил многих моих модераторов. Бесчисленное количество модераторов удаляло пользователей, стирали сообщения, передавали IP-адреса другим лицам, фактически уничтожив мой проект. Я уже несколько месяцев обхожусь без модераторов, но вести форум без них крайне сложно. Я хочу снова нанять модераторов, но даже тщательный отбор не помогает. Не знаю, как обстоят дела в культуре стран Северной Европы, но в бразильской форумной среде люди часто относятся к своим обязанностям несерьёзно и легко поддаются коррупции. В конечном счёте деньги оказываются важнее, и они используют свои права для разрушения моего форума. Единственное решение, которое у меня есть, — лишить модераторов тех же прав, что и у администраторов. И это сработало: я реализовал это через CSS.
Я уже создавал тему об этом, которая вызвала большие споры, ни к чему не приведшие. Многие советовали мне лучше подбирать модераторов, чтобы иметь чёткие критерии и выбирать более надёжных людей. Однако это не применимо к форумам, на которых я состою. Единственным решением было ограничить полномочия модераторов (доступ к IP, баны, удаление всех сообщений, проверка электронной почты и т. д.), но это затронуло и меня самого.
Привет ![]()
Вы можете использовать Безопасный режим (точно так же, как ваши модераторы), чтобы отключить темы.
С помощью пользовательских разделов вы можете создать быструю ссылку на /safe-mode.
-
Создайте пользовательский раздел в боковой панели следующим образом.
Это должно выглядеть так. (Добавьте заголовок, имя и ссылку/safe-mode). Обязательно снимите флажокСделать этот раздел публичным и видимым для всех.
-
Он появится в меню навигации (боковая панель) как пользовательский раздел.
-
Здесь вы можете отключить темы и компоненты тем. Нажмите кнопку «Войти в безопасный режим».
Может, стоит посмотреть на модераторов категорий?
Если злоумышленник обнаружит безопасный режим, ваши меры противодействия через CSS окажутся неэффективными.
Единственный способ обеспечить безопасность Discourse — это тщательное назначение прав через бэкенд.
Это означает, что вам понадобится пользовательский плагин, который внесёт эти изменения. Если у вас нет бюджета (возможно, от 1000 до 5000 долларов), попробуйте использовать модераторов категорий или уровень tl4.
О них уже говорили здесь: ![]()
Я думаю, что можно сделать так, чтобы компонент темы скрывал этот контент от всех, кроме администраторов.
Однако безопасный режим всё равно будет лёгким способом обойти это ограничение. Возможно, быстрый и простой плагин сможет отключить эти функции, не требуя столько времени, как я изначально предполагал.
Я согласен практически со всем, что здесь было сказано.
Если вы действительно хотите использовать CSS, вот как сделать так, чтобы ваши изменения CSS применялись только к неадминистраторам:
На вкладке Head вашей темы вставьте следующее:
<script type="text/discourse-plugin" version="1.4.0">
let currentUser = api.getCurrentUser();
if (currentUser.admin == true) {
document.querySelector("body").classList.add("is-admin");
}
</script>
Оберните все ваши CSS-правила в body:not(.is-admin) { (ваш CSS) }, например:
body:not(.is-admin) {
#main {
background: pink;
}
}
В моём примере розовый фон будет применён ко всем, кроме администраторов.
Discourse автоматически добавляет классы, основанные на группах, к тегу , поэтому, вероятно, можно обойтись без JS и сделать что-то вроде
body:not(.group-admins) #main { background: pink; }
У меня нет других классов, специфичных для групп, кроме staff, так как я администратор на моем тестовом экземпляре (последняя версия Discourse):
<body class="chat-enabled staff has-sidebar-page navigation-topics docked"
Насколько я могу судить, ни в теге <html>, ни в каком-либо другом теге.
На meta мы используем CSS Classes for Current User's Groups, что также можно применить в случае даниэлы. ![]()
Ахххх, вот в чём была путаница — я просто искал на Meta
Спасибо, @Canapin
Я тебя очень люблю!
Спасибо, что показал мне это. Я не мог решить эту проблему уже больше года.



