Я знаю, что по умолчанию все эти темы всегда видны администраторам. Но предположим, что я не хочу видеть их на своём личном сайте, который я создаю на Discourse, даже в роли администратора.
Как можно скрыть все эти темы во всех категориях?
Вы можете убрать их из списка, но вы всё равно будете их видеть, так как вы администратор.
Хотя вы можете отключить уведомления по этим темам.
Возможно, это можно сделать с помощью CSS?
Не уверен, есть ли у них отдельный класс?
Кажется, проще всего пометить их всех и отключить уведомления для этого тега. (Но скрыть их для всех остальных в их же интересах)
Из любопытства: почему вы хотите скрыть их от себя?
Из любопытства, почему вы хотите скрыть их от себя?
Честно? Мне просто не нравится их видеть. Если я захожу на свой блог… я просто хочу видеть свой блог тоже ![]()
Я нашёл решение. Очевидно, это не масштабируемое решение и может даже не быть технически оптимальным (не уверен, как это будет обрабатываться на крупных сайтах с большим количеством загрузок страниц и т. д.), но оно работает для меня, так как у меня всего одна категория для блога:
ChatGPT дал мне это, и это сработало с первой попытки. Просто нацеливаемся на этот очень конкретный ID темы и скрываем её:
<script>
document.addEventListener("DOMContentLoaded", function() {
var element = document.querySelector('[data-topic-id="10"]'); // замените 10 на ваш ID темы
if (element) {
element.style.display = 'none';
}
});
</script>
Вуаля!
Если вам интересно мнение корпоративных пользователей (ведь я знаю, что мы обсуждали это много лет назад), то проблема заключается в несогласованности административного опыта: тема Discourse используется как настройка категории, тогда как другие настройки категорий не представлены в виде тем Discourse. Это выглядит очень разрозненно (хотя и очень изобретательно!). Я также вижу, что эти темы «О нас» переименовываются и используются как руководства по началу работы (я сам так делаю, но только потому, что вынужден это поддерживать) и т. д.
Я понимаю причины и первоначальную ценность использования темы как уже существующего места для размещения описания темы. Также вижу потенциал в этой возможности, например, когда текст компонента темы discourse-category-sidebars размещается в теме.
Однако с точки зрения UX и администрирования я ожидал бы, что все настройки моей категории будут находиться в одном месте. Discourse уже хранит текст как настройку внутри категории, включая Markdown и всё остальное, для шаблона категории. Было бы здорово увидеть подобную согласованность в настройках категорий.
Надеюсь, это даст немного больше понимания!
РЕДАКТИРОВАНИЕ: Если я упускаю какую-то ценность, которую не заметил, пожалуйста, укажите мне на неё! ![]()
Кстати, РЕДАКТИРОВАНО:
Облом. Похоже, что скрипт, на который я ссылался выше, работает только при первой загрузке веб-страницы в браузере. Если вы перемещаетесь по сайту и возвращаетесь, эти элементы появляются снова. С моими ограниченными (читай: абсолютно нулевыми) знаниями в веб-разработке, я предполагаю, что это происходит потому, что DOMContentLoaded не запускается повторно после загрузки сайта.
Поиск продолжается…
Думаю, если вы хотите скрыть только одну тему, то это, вероятно, можно сделать с помощью CSS. Мой CSS не очень хорош, но я вижу там data-topic-id, так что, скорее всего, к нему можно обратиться?
А, вот тут есть нюанс! Если вы перепрофилируете их, то такая тема не будет отображаться в некоторых списках тем и не будет отправлять уведомления, когда люди отвечают, и т. д. Думаю, лучшее, что можно с ними сделать в текущем виде, — это просто оставить их как описания категорий, закрыть их (и исключить из списка, если вы не хотите, чтобы они были видны большинству людей). Разумеется, если у вас есть возможность внести изменения в разработку. ![]()
Хранение описания категории в темах также обсуждалось внутри команды, как и то, как мы обрабатываем Условия использования и Руководящие принципы и т. д. Однако никаких немедленных планов по изменению формата нет, но я думаю, что это определенно тема для обсуждения.
Существует тема #feature об изменении настроек по умолчанию:
Это обновление отлично подходит для моего случая.
Если вы хотите скрыть определённую тему с помощью CSS при загрузке страницы и далее, это поможет. Просто добавьте ID ваших тем в список ID тем:
<script>
document.addEventListener("DOMContentLoaded", function() {
var topicIdsToHide = ["10", "20", "30"]; // Добавьте сюда ID ваших тем
function hideElementsByDataTopicIds() {
topicIdsToHide.forEach(function(id) {
var element = document.querySelector('[data-topic-id="' + id + '"]');
if (element) {
element.style.display = 'none';
}
});
}
// Запустить функцию изначально
hideElementsByDataTopicIds();
// Создать наблюдатель мутаций для отслеживания изменений в DOM
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
hideElementsByDataTopicIds();
});
});
// Наблюдать за всем документом
observer.observe(document.body, { childList: true, subtree: true });
});
</script>