Показать все категории на главной странице (включая отключенные), но не показывать их темы в последних сообщениях

Итак, наша главная страница отображает два столбца: категории слева и последние темы справа.

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

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

Есть ли способы обойти эту проблему?

Последнее обновление ~2 года назад. Я беспокоюсь о возможных проблемах совместимости.

В идеальном случае было бы решить мою задачу, используя стандартные средства.

Как насчёт создания подкатегории и настройки родительской категории так, чтобы в фильтре по умолчанию не отображались темы из подкатегории?

Отразится ли это на списке «Последние», отображаемом на главной странице Категория + Последние?

Ещё один вопрос: если кто-то отключит уведомления для категории, это не повлияет на то, что видят анонимные пользователи, верно?

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

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

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

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

Да, вот почему я здесь — потому что я не смог решить проблему, несмотря на то что перепробовал довольно много вариантов, которые мог придумать.

Кажется, наличие обычной родительской категории и подкатегории, отключённой по умолчанию, должно подойти?

Или, возможно, лучше использовать отключённый тег?

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

У вас есть два варианта.

  1. С помощью JavaScript во вкладке заголовка вашей темы
<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");
  const ignoreCategoryId = 6;

  api.modifyClass("component:categories-topic-list", {
    @on("didReceiveAttrs")
    removeCategoryTopics() {
      const filtered = this.topics.filter(
        ({ category_id }) => category_id !== ignoreCategoryId
      );

      this.topics = filtered;
    },
  });
</script>

Это предотвращает рендеринг разметки для тем вообще. Измените ignoreCategoryId на идентификатор категории, которую вы хотите исключить. Вы можете найти его, перейдя в эту категорию и проверив URL в вашем браузере.

https://meta.discourse.org/c/support/6 <---- последняя цифра — это идентификатор категории
  1. С помощью CSS… если это категория верхнего уровня
.latest-topic-list-item.category-SLUG {
  display: none;
}

если это подкатегория

.latest-topic-list-item.category-PARENT_SLUG-CATEGORY_SLUG {
  display: none;
}

Чтобы сделать что-то ещё, потребуется плагин или изменение в ядре, насколько мне известно.