# Mute category to mute all children categories

**URL:** <https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098>\
**Category:** Feature\
**Tags:** completed\
**Created:** [2014年四月27日 00:36 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098 "2014-04-27T00:36:25Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![nXqd](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nxqd/32/114262_2.png) [@nXqd](https://meta.discourse.org/u/nXqd)\
**Post date:** [2014年四月27日 00:36 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/1 "2014-04-27T00:36:25Z")

</div>

I think this is more logical. In case, we want to exclude a specific child category, just insert it to watch.  
What do you guys think about this ?

---

<div class="post-metadata">

**Author:** ![lee-dohm](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lee-dohm/32/113511_2.png) [@lee-dohm](https://meta.discourse.org/u/lee-dohm)\
**Post date:** [2014年四月27日 16:45 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/2 "2014-04-27T16:45:12Z")

</div>

Let’s say the board I’m on has the following category structure:

- foo
- bar
  - wimble
  - wobble
  - wabble

- baz

I want to mute `bar` (and therefore the subcategories underneath it), but leave `bar|wobble` as it is normally. My understanding of your suggestion is that my only option is to Watch or Track `bar|wobble`? What if I just want `bar|wobble` topics to default to Regular?

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2014年四月27日 23:52 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/3 "2014-04-27T23:52:34Z")

</div>

I don’t know, maybe, its such and edge area of the system I am not sure I can justify making changes to it now.

---

<div class="post-metadata">

**Author:** ![Ram-Z](https://avatars.discourse-cdn.com/v4/letter/r/9e8a1a/32.png) [@Ram-Z](https://meta.discourse.org/u/Ram-Z)\
**Post date:** [2016年十月3日 22:00 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/4 "2016-10-03T22:00:10Z")

</div>

Muting sub-categories would very much be the expected behaviour.

The way to implement this cleanly (from a user perspective) would be to add a new notification mode to sub-categories called “Inherit from parent” and make this the default. Users could then explicitely set the notification level for sub-categories if they so choose.

---

<div class="post-metadata">

**Author:** ![\_diondiondion](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/_diondiondion/32/200719_2.png) [@\_diondiondion](https://meta.discourse.org/u/_diondiondion)\
**Post date:** [2020年十一月24日 16:15 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/6 "2020-11-24T16:15:39Z")

</div>

抱歉打扰了这个帖子。

> [@Ram-Z](#):
>
> 静音子类别将是非常符合预期的行为。

可以确认，我的论坛中多位用户对“静音包含子类别的父类别”这一操作感到困惑。他们不明白为什么该类别在分类页面会出现_两次_：一次在主要视图中显示为变暗，另一次则被隐藏在可折叠区域中。对他们来说并不明显的是，若要完全隐藏该类别，还必须单独静音其子类别。

实现这一功能的另一种可能方式是：当用户选择静音顶级类别后，询问他们是否希望同时静音其子类别。这不必自动完成，但需要让用户意识到，静音顶级类别并不等同于静音其中的所有话题。

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2022年二月9日 06:07 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/8 "2022-02-09T06:07:22Z")

</div>

@codinghorror，我认为恢复此功能是有意义的。如果静音类别会自动静音所有子类别，那么行为将更加合理。

这将解决 @fitzy 和 @HAWK 今天面临的问题。

提案如下（考虑到此层级结构）：

- A
  - B
  - C

静音 (A)… (B) 和 (C) 将不再出现在最新和类别中，除非被明确跟踪。

要将 (B) 重新添加到列表中，您需要将其设置为 `Normal`。

导航到 (C) 时，您将看到：

![image](https://global.discourse-cdn.com/meta/original/3X/1/f/1fd821df68e59a303e2234e1117c3b251c49a059.png)

这里已经过去了很多年，但这个小问题对我们自己的员工影响很大，我同意“自动静音子项”的行为更直观，并且有一个非常简单的选择退出方式。

有什么想法？

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2022年二月9日 06:32 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/9 "2022-02-09T06:32:30Z")

</div>

可能没问题，是时候了！⏰

（这里的阻力主要是因为子子子子类别是个非常糟糕的主意。它们现在仍然是。）

---

<div class="post-metadata">

**Author:** ![kris.kotlarek](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kris.kotlarek/32/176919_2.png) [@kris.kotlarek](https://meta.discourse.org/u/kris.kotlarek)\
**Post date:** [2022年二月10日 00:12 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/12 "2022-02-10T00:12:30Z")

</div>

我假设子类别仅在未明确设置任何内容时才继承主类别的静音状态。因此，如果我之前将 B 设置为“观看”，那么当我静音 A 时，只有 C 会被静音。

静音只是一个例子，但其他通知状态如何？

我们应该保持一致，当决定“观看”/“跟踪”A 时，我们应该“观看”/“跟踪”B 和 C，还是只为静音实现该解决方案？

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2022年二月10日 00:16 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/13 "2022-02-10T00:16:23Z")

</div>

> [@kris.kotlarek](#):
>
> 所以如果我之前将 B 设置为“关注”，那么当我静音 A 时，只有 C 会被静音。

是的，事实上，我只会根据用户类别记录的缺失来设置默认值。

在我们上面的示例中，静音 (A) 不应自动用 B 和 C 填充此框。

 ![image](https://global.discourse-cdn.com/meta/original/3X/9/4/94361171b19047aad4522f1a91877b50870651e2.png)

我猜我确实支持这里的一致性。但这一切都应该基于缺失，我们不应该为子类别创建新行。

---

<div class="post-metadata">

**Author:** ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)\
**Post date:** [2022年二月10日 00:56 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/14 "2022-02-10T00:56:56Z")

</div>

> [@kris.kotlarek](#):
>
> 我们应该保持一致吗？当决定关注/跟踪 A 时，我们也应该关注/跟踪 B 和 C，还是只为静音实现该解决方案？

> [@sam](#):
>
> 我想我支持这里的一致性。但这应该都基于缺席，我们不应该为子类别创建新行。

我想指出一个潜在的风险，因为已经存在不一致。静音一个类别并不会明确静音该类别中的每个主题。相反，它会覆盖“从未设置”状态的任何主题，将它们视为已设置为静音。但是，跟踪/关注一个类别会显式地将该类别中的每个现有主题和新主题设置为跟踪/关注。重要的是，从静音中删除一个类别基本上就像你从未将其添加到静音一样，但从跟踪/关注中删除一个类别并不会撤销该类别中每个现有主题仍然设置为跟踪/关注的事实。它只会停止跟踪/关注该类别中的新主题。

就我个人而言，我仍在处理我曾经在测试某项内容时将 #Support 设置为跟踪的事实，因为现在我偶尔会看到这些主题旁边出现未读指示符，尽管我并不关心它们。现在，我认为这应该有所改变，以便跟踪/关注一个类别能像静音一样工作，这意味着它会覆盖“从未设置”的主题状态到类别状态，而不会实际更改单个主题的状态。但在此之前，我真的很担心让跟踪/关注一个类别也跟踪/关注其所有子类别，因为该操作无法完全撤销。

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2022年二月10日 03:57 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/15 "2022-02-10T03:57:13Z")

</div>

> [@seanblue](#):
>
> 然而，跟踪/关注某个类别会明确将该类别中所有现有和新主题设置为跟踪/关注。

哦，Sean，你说得很有道理。

是的，我们先把这个范围限制在仅静音，@kris.kotlarek，一旦我们完成这个更改，我们就可以考虑其他状态。

---

<div class="post-metadata">

**Author:** ![kris.kotlarek](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kris.kotlarek/32/176919_2.png) [@kris.kotlarek](https://meta.discourse.org/u/kris.kotlarek)\
**Post date:** [2022年二月17日 23:42 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/16 "2022-02-17T23:42:21Z")

</div>

此功能已通过此 PR 完成

> <https://github.com/discourse/discourse/pull/15966>
>
> When parent category or grandparent category is muted, then category should be m…uted as well.
> 
> Still, it can be overridden by setting individual subcategory notification level.
> 
> CategoryUser record is not created, mute for subcategories is purely virtual.

---

<div class="post-metadata">

**Author:** ![kris.kotlarek](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kris.kotlarek/32/176919_2.png) [@kris.kotlarek](https://meta.discourse.org/u/kris.kotlarek)\
**Post date:** [2022年二月17日 23:42 UTC](https://meta.discourse.org/t/mute-category-to-mute-all-children-categories/15098/17 "2022-02-17T23:42:26Z")

</div>


