隐藏最新列表中的分类的正确方法

您好,

作为论坛管理员,我希望所有用户都能订阅某些类别,并启用邮件列表选项。

我尝试在我的个人资料中设置类别(关注、跟踪和静音),以便在数据库中查找这些设置。我想将相同的设置应用于其他用户,看起来是 category_users 表。

我是否可以插入一些数据来实现这一目标?

之前,我曾尝试将某些类别设置为“邮件列表”,以确保摘要仅包含这些类别,但我发现这并不正确——该设置不会调整摘要内容。

也许逻辑不同?目标是:

  • 强制新用户从某些类别接收摘要(好的,让他们稍后自行修改)
  • 不在他们的“最新”页面中显示某些类别

我找到了一个与我情况相近的话题:https://meta.discourse.org/t/viewing-a-list-of-users-who-are-watching-a-category/15225。但我不确定是否应该在这个五年前的话题上再次回复。

为什么不使用这些设置

我不确定这是否能有所帮助。我正在寻找一种批量方法,为其他 100 名用户设置此选项。

如果您选择此项,将弹出一个对话框,询问您是想为所有人更改,还是仅对未来的操作生效。:+1:

我想分享我的解决方案。

正如 Gavin 提到的,我在 UI 中点击了必要的设置(静音并跟踪某些类别):

然后我连接到数据库以确定类别和用户的 ID。涉及的表为:category_usersusers

我按照下图所示筛选了自己的设置(user_id=5):

接下来,我想将相同的设置应用到另外两个用户(id=33 和 34)。显然,我需要在 category_users 表中添加相应的行。

示例:

  • 共有 6 个类别:id 为 1、2、15、17、19 和 24。
  • 静音类别 15 和 17。
  • 在类别 1、2 和 24 中关注首条帖子。
  • 跟踪类别 19。

首先,我创建了一个脚本,将所有选中的类别插入到静音部分(notification_level=0):

INSERT INTO 
	"category_users" 
	("category_id", "user_id", "notification_level", "last_seen_at") 
VALUES
(24, 34, 0, NULL),
(2,  34, 0, NULL),
(1,  34, 0, NULL),
(19, 34, 0, NULL),
(15, 34, 0, NULL),
(17, 34, 0, NULL),

(24, 33, 0, NULL),
(2,  33, 0, NULL),
(1,  33, 0, NULL),
(19, 33, 0, NULL),
(15, 33, 0, NULL),
(17, 33, 0, NULL);

您可以一次性添加多达 1000 行。

之后,我更新了跟踪类别和关注首条帖子类别对应的记录:

-- 关注首条帖子
UPDATE "public"."category_users" SET "notification_level"='4' WHERE  "category_id" in (1,2,24);
-- 跟踪
UPDATE "public"."category_users" SET "notification_level"='2' WHERE  "category_id"=19;

完成上述操作后,用户设置已更新。静音的类别将从主页和最新主题中隐藏。

изображение

如果还有其他更简单的方法可以批量编辑用户关于静音或关注类别的设置,请告诉我。