# Скрыть все темы «О категории x»

**URL:** https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536
**Category:** Development
**Tags:** css
**Created:** [18.Май.2024 13:40:29 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536 "2024-05-18T13:40:29Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [18.Май.2024 13:40:29 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/1 "2024-05-18T13:40:29Z")

</div>

![image](https://global.discourse-cdn.com/meta/original/4X/5/6/5/565ca2d1840af2d15f81651b354ae29c32a09729.jpeg)

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

Как можно скрыть все эти темы во всех категориях?

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [18.Май.2024 13:47:32 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/2 "2024-05-18T13:47:32Z")

</div>

Вы можете убрать их из списка, но вы всё равно будете их видеть, так как вы администратор. 🤔 Хотя вы можете отключить уведомления по этим темам.

---

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [18.Май.2024 13:48:01 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/3 "2024-05-18T13:48:01Z")

</div>

Возможно, это можно сделать с помощью CSS?

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [18.Май.2024 14:05:20 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/4 "2024-05-18T14:05:20Z")

</div>

Не уверен, есть ли у них отдельный класс?

Кажется, проще всего пометить их всех и отключить уведомления для этого тега. (Но скрыть их для всех остальных в их же интересах)

Из любопытства: почему вы хотите скрыть их от себя?

---

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [18.Май.2024 14:08:44 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/5 "2024-05-18T14:08:44Z")

</div>

> Из любопытства, почему вы хотите скрыть их от себя?

Честно? Мне просто не нравится их видеть. Если я захожу на свой блог… я просто хочу видеть свой блог тоже 🙂

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

ChatGPT дал мне это, и это сработало с первой попытки. Просто нацеливаемся на этот очень конкретный ID темы и скрываем её:

```html
<script>
  document.addEventListener("DOMContentLoaded", function() {
    var element = document.querySelector('[data-topic-id="10"]'); // замените 10 на ваш ID темы
    if (element) {
      element.style.display = 'none';
    }
  });
</script>

```

Вуаля!

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/e/7/fe7c66042ee41c74be5b201c57378cb53fbfc157.jpeg)

---

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [18.Май.2024 14:17:53 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/6 "2024-05-18T14:17:53Z")

</div>

Если вам интересно мнение корпоративных пользователей (ведь я знаю, что мы обсуждали это много лет назад), то проблема заключается в несогласованности административного опыта: тема Discourse используется как настройка категории, тогда как другие настройки категорий не представлены в виде тем Discourse. Это выглядит очень разрозненно (хотя и очень изобретательно!). Я также вижу, что эти темы «О нас» переименовываются и используются как руководства по началу работы (я сам так делаю, но только потому, что вынужден это поддерживать) и т. д.

Я понимаю причины и первоначальную ценность использования темы как уже существующего места для размещения описания темы. Также вижу потенциал в этой возможности, например, когда текст компонента темы [discourse-category-sidebars](https://meta.discourse.org/t/discourse-category-sidebars/107561) размещается в теме.

Однако с точки зрения UX и администрирования я ожидал бы, что все настройки моей категории будут находиться в одном месте. Discourse уже хранит текст как настройку внутри категории, включая Markdown и всё остальное, для шаблона категории. Было бы здорово увидеть подобную согласованность в настройках категорий.

Надеюсь, это даст немного больше понимания!

* * *

РЕДАКТИРОВАНИЕ: Если я упускаю какую-то ценность, которую не заметил, пожалуйста, укажите мне на неё! 🚀

---

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [18.Май.2024 14:20:31 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/7 "2024-05-18T14:20:31Z")

</div>

Кстати, РЕДАКТИРОВАНО:

Облом. Похоже, что скрипт, на который я ссылался выше, работает только при первой загрузке веб-страницы в браузере. Если вы перемещаетесь по сайту и возвращаетесь, эти элементы появляются снова. С моими ограниченными (читай: абсолютно нулевыми) знаниями в веб-разработке, я предполагаю, что это происходит потому, что `DOMContentLoaded` не запускается повторно после загрузки сайта.

Поиск продолжается…

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [18.Май.2024 14:33:02 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/8 "2024-05-18T14:33:02Z")

</div>

Думаю, если вы хотите скрыть только одну тему, то это, вероятно, можно сделать с помощью CSS. Мой CSS не очень хорош, но я вижу там data-topic-id, так что, скорее всего, к нему можно обратиться?

> [@Jordan Violet](#):
>
> Я также вижу, что эти темы «О проекте» переименованы и используются как руководства по началу работы (я сам так делаю, хотя только потому, что вынужден это делать) и т. д.

А, вот тут есть нюанс! Если вы перепрофилируете их, то такая тема не будет отображаться в некоторых списках тем и не будет отправлять уведомления, когда люди отвечают, и т. д. Думаю, лучшее, что можно с ними сделать в текущем виде, — это просто оставить их как описания категорий, закрыть их (и исключить из списка, если вы не хотите, чтобы они были видны большинству людей). Разумеется, если у вас есть возможность внести изменения в разработку. 🙂

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

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [18.Май.2024 14:41:02 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/9 "2024-05-18T14:41:02Z")

</div>

> [@JammyDodger](#):
>
> Я думаю, что лучшее, что можно сделать с ними в текущем виде, — это оставить их как описания категорий и закрыть их

Есть тема #Contribute > Feature о изменении настроек по умолчанию

> [@О категории автоматически созданной темы - параметры на уровне сайта](https://meta.discourse.org/t/about-category-auto-created-topic-sitewide-options/159870/3?u=moin):
>
> Вы заставили меня стыдиться и привели в порядок все наши темы на Meta. +1 slight_smile Я также столкнулся с похожей проблемой на другом форуме, где состою, так что мне следовало быть более внимательным. slight_smile Но, я думаю, суть остаётся прежней. Темы «О нас» автоматически скрываются из списков тем, поэтому легко пропустить ответ в них. Закрывать их по умолчанию или делать «неотвечаемыми» каким-то другим способом, вероятно, было бы весьма полезно для большинства сайтов.

---

<div class="post-metadata">

### Author: ![jordan-violet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jordan-violet/32/281428_2.png) [@jordan-violet](https://meta.discourse.org/u/jordan-violet)
#### Post date: [19.Май.2024 09:13:14 UTC](https://meta.discourse.org/t/hide-all-about-the-x-category-topics/308536/11 "2024-05-19T09:13:14Z")

</div>

Это обновление отлично подходит для моего случая.

Если вы хотите скрыть определённую тему с помощью CSS при загрузке страницы и далее, это поможет. Просто добавьте ID ваших тем в список ID тем:

```html
<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>

```
