fzngagan
(Faizaan Gagan)
1
本指南介绍如何设置默认侧边栏类别并将更改应用到现有用户。
所需用户级别:管理员
你可以使用 default navigation menu categories(默认导航菜单类别)来选择默认显示在侧边栏中的类别。你还可以将更改应用到现有用户,或重新应用他们已从侧边栏中移除的类别。
此设置并不强制所有用户拥有完全相同的侧边栏。 它仅应用添加和删除操作,而不是替换每个用户的完整类别列表。用户自行添加的其他类别可以保留。
设置默认类别
- 前往“管理” → “全站设置”。
- 搜索
default navigation menu categories。
- 打开选择器并选择你希望默认显示的类别。若要移除某个类别,请点击其名称旁边的“×”。
- 点击“✓”按钮以保存。
- 如果系统提示是否将更改应用到历史记录,请选择以下选项之一:
- “是”会将添加和删除操作应用到现有用户,并更新之后加入的新用户的默认设置。
- “否,仅从此处开始应用更改”会更新默认设置,但不会改变现有用户的侧边栏。
受影响的用户数量取决于你的站点。如果没有现有用户受到该更改的影响,则可能不会显示此提示。
重新应用已在默认列表中的类别
如果用户从侧边栏中移除了一个默认类别,保存相同的默认列表并不会将其重新添加。系统仅应用添加和删除操作。
若要重新应用已配置的类别:
- 记下你希望显示的类别。
- 从
default navigation menu categories 中移除所有类别,然后保存。当系统提示时,选择“是”以将移除操作应用到现有用户。
- 留出时间让后台更新完成。这可能需要几分钟,或者在大型站点上需要更长时间。
- 添加你希望显示的类别,然后再次保存。当系统提示时,选择“是”以将添加操作应用到现有用户。
- 等待第二次后台更新完成,然后刷新页面并检查侧边栏。
此操作会移除并重新添加已配置的默认设置。它不会移除那些从未包含在此设置中的、用户自行添加的类别。
了解现有用户的变化
当你选择“是”时,Discourse 会应用先前设置与更新后设置之间的差异:
| 对设置的更改 |
对现有用户的影响 |
| 添加类别 |
如果用户侧边栏类别列表中尚未包含该类别,则将其添加进去。 |
| 移除类别 |
从用户侧边栏类别列表中移除该类别,包括那些自行选择该类别的用户。 |
| 保持类别不变 |
不会将之前已移除该类别的用户重新应用此类别。 |
| 保持设置外自行添加的类别不变 |
不会移除该类别。 |
例如,假设“General”(常规)是一个默认类别,而用户也自行添加了“Support”(支持)。清除并重新添加“General”不会移除“Support”,除非“Support”也已从设置中移除。
了解限制条件
- 类别权限仍然有效。 选择私有类别不会授予访问权限,也不会使其对无法访问的用户可见。
- 用户此后仍可自定义其侧边栏。 这是一个默认且批量更新的操作,而非强制性的类别列表。
- 这不是完整的侧边栏重置。 清除并重新应用的步骤并不保证所有用户拥有完全相同的类别列表。
其他资源
5 个赞
Moin
2
一次性移除之前的默认设置并添加新设置,与分两步进行(中间间隔一段时间)有什么区别?
我曾短暂认为这个过程会重置所有个性化自定义。但根据我的测试,事实并非如此。如果某个类别之前不在侧边栏的默认设置中,而是由用户自行添加的,那么即使清除了设置,它也不会被移除。只有之前在设置中配置的类别会被移除。
因此,若要使所有人的侧边栏保持一致,你需要执行以下步骤:
- 将所有类别添加到设置中(并且最好不要为所有人覆盖此设置)
- 然后从设置中移除所有类别,并为所有人覆盖此设置
- (等待几分钟?)
- 添加新的类别,并为所有人覆盖此设置
此处需要将步骤 2 和步骤 4 分开,因为步骤 1 并未应用到所有人身上。我们可以将步骤 1 应用到所有人,使所有人的侧边栏都包含所有类别,几分钟后,再移除我们不希望出现在他们侧边栏中的类别。但这可能会导致几分钟内用户体验变差。
我的测试(显示清除手动添加类别的设置不会被移除)是否不正确?步骤分离是否有其他原因?我想了解这一点,以便决定是否需要将相关信息添加到 Configuring the default sidebar for your users
3 个赞
fzngagan
(Faizaan Gagan)
5
@Moin
这里的回填(backfilling)工作方式与通常的预期略有不同。当更新“默认导航菜单类别”设置时,我们并不会简单地重置所有用户的侧边栏类别。我们的做法如下:
- 如果管理员在设置中添加了一些类别,那么只有这些新添加的类别会被加入到尚未设置这些类别的所有用户的侧边栏中。
- 如果从设置中移除了某些类别,那么这些类别也会从所有用户的侧边栏中移除。
因此,回填并不会强制将设置的状态应用到所有用户,而是仅对设置中新增或移除的类别进行增量更新。
这样做的主要原因是为了保留每个用户的个人偏好。
引入此行为的 PR 如下:
我们曾尝试通过以下两种方式使所有用户拥有相同的类别:
- 全部添加,按历史应用;再移除部分,按历史应用。
- 全部移除,按历史应用;再添加部分,按历史应用。
在最近一次针对大型站点的尝试中,方法 1 未能正常工作,而方法 2 则成功了。因此我记录了方法 2。
如果您有时间,请尝试用一批用户测试这两种方式,看看是否有效。如果需要,我可以编写一个 SQL 查询来确认更新是否按预期生效。请随时告诉我您的想法。
1 个赞
Moin
6
我再次尝试了您在第一篇文章中描述的步骤。但我仍然注意到同样的问题:用户添加到其侧边栏的类别并未被移除,因此结果并非所有用户在其侧边栏中都拥有相同的类别。
详细复现步骤
- 我创建了一个全新的论坛
- 我创建了 5 个类别(category1、category2、category3、category4、category5)
- 我使用“编辑侧边栏类别”选项将
category4 添加到了我的侧边栏
- 该类别已添加到我的侧边栏
- 我查看了
default_navigation_menu_categories 站点设置
- 正如您在指南中所说,我移除了所有类别
并将更改应用给所有用户
7. 现在该设置已为空
8. 我检查了我的侧边栏,只有手动添加的 category4 在其中(底部的站点设置链接也表明该站点设置已为空)
9. 我等待了约 45 分钟,然后将 category1、category2 和 category3 添加到了设置中
并将更改应用给所有用户
基于本指南标题的预期结果:所有用户在其侧边栏中都拥有相同的类别,即仅包含设置中的类别,不包含其他内容。
实际结果:category4 仍然在侧边栏中,而对于未手动添加该类别的用户,其侧边栏中并没有它。
您期望在哪个步骤中移除用户手动添加到其侧边栏的类别(在我的例子中是 category4),从而实现所有用户侧边栏中拥有相同类别的结果?
根据您在这里所说的,我预期它不会被移除,因为该类别并未从设置中移除,因为它本来就不在设置中。但您说您使用这些步骤来强制所有用户拥有相同的类别。
如果我添加了所有类别(方法 1),category4 将会被添加然后被移除,所以我预期它会消失。这就是我理解发生的情况的地方。但您的指南说我应该使用方法 2,所以我想知道我在理解或测试中遗漏了什么。
1 个赞
sam
(Sam Saffron)
7
@moin 你现在对这个指南感觉如何?它是否回答了所有需要回答的问题?是否太啰嗦?还是不够详细?
(我正在开发一个机器人,以便让我们的文档与实际代码保持一致并更新截图)