你好!
为了维护目的,我不得不将论坛设置为只读模式超过一天。
这会影响 Devotee 徽章的天数计数吗?
嗨!
我认为不会,只要用户仍然访问只读论坛,我就没找到任何理由说明会出问题。"start" 似乎仅与用户相关。
我记得用户标签页中的“最后访问”列在只读模式下依然有效,所以我的猜测是:你没问题 ![]()
“年度回顾”中提到,我的一些用户(包括我自己)今年只访问了 364 天,但我很确定这是错误的……
有没有什么快速的方法可以查看这些用户错过了哪一天?
为了回答您的第一个问题,我预计将网站设为只读模式会影响用户获得“Devotee”徽章的能力。当网站处于只读模式时,不会有新数据写入数据库,因此在网站处于只读模式时,用户访问的详细信息将不会被记录。
可以试试这个查询。它会返回用户在给定开始日期和结束日期之间未访问网站的日期:
--[params]
-- date :start_date
-- date :end_date
-- string :username
WITH days AS (
SELECT date_trunc('day', day)::date AS day
FROM generate_series(:start_date::date, :end_date::date, '1 day') AS day
),
users_visits AS (
SELECT
visited_at
FROM user_visits uv
JOIN users u ON u.id = uv.user_id
WHERE u.username = :username
AND visited_at BETWEEN :start_date AND :end_date
),
visits_days AS (
SELECT
day,
visited_at
FROM days
LEFT JOIN users_visits uv
ON uv.visited_at = day
ORDER BY day DESC
)
SELECT day AS days_without_visits
FROM visits_days WHERE visited_at IS NULL
ORDER BY day DESC
如果您想为一些不符合技术资格的用户授予徽章,请查看 https://meta.discourse.org/t/how-to-award-a-non-custom-badge-through-the-console/103269。请注意,这种方法仅在自托管网站上可用。对于托管在我们服务器上的网站,我们可以为您授予该主题中列出的徽章。
非常感谢您详尽的回复。
查询确实显示用户在论坛只读的那天没有访问论坛。
我将从控制台授予徽章,感谢您提供这些额外信息 ![]()
由于“Devotee”徽章不能授予多次,因此无法授予该徽章。但无论如何,知道这一点还是好的!