功能
您可以创建任意数量的统计数据进行显示,统计数据来自 /about 页面,您可以从中选择:
- 主题
- 帖子
- 活跃用户
- 用户
- 点赞
- 聊天消息
- 聊天频道
- 聊天用户
并且这些可以单独设置为以下 3 个时间段之一:
除了来源和时间段,您还可以配置:
设置
| 名称 |
描述 |
| 显示统计数据 |
|
| 横幅标题 |
|
| 显示在 |
|
| 背景颜色 |
Discourse 颜色变量或十六进制值 |
| 文本颜色 |
Discourse 颜色变量或十六进制值 |
| 最小列宽 |
|
| 移动端隐藏 |
|
| 插件出口 |
此组件出现的插件出口。尝试 above-main-container 或 below-site-header,您可以使用 插件出口位置主题组件 找到更多出口。 |
| 禁用缓存 |
横幅统计数据将在每次横幅可见时刷新。请注意,这可能会增加一些服务器负载。 |
由我们托管? 标准、商业和企业套餐均可使用主题组件。
27 个赞
Jagster
(Jakke Lehtonen)
2
iPhone SE 不遵守 hide on mobile。
编辑:看起来任何移动设备都不遵循该设置,横幅始终可见。
3 个赞
Jagster
(Jakke Lehtonen)
3
还有一个小的UX/UI请求——链接应该看起来像链接。
3 个赞
感谢您的快速反馈@Jagster!我已更新以修复这些问题
3 个赞
您好,@awesomerobot,
非常感谢您提供的这个主题组件;我一定会好好利用它。
如果您不介意的话,我有一个问题想请教您,因为我有点困惑。“活跃用户”我能理解,因为它不言自明,但是“用户”指的是什么呢?
好问题!
活跃用户是指在过去1/7/30天内被访问过的用户(他们登录访问了网站)
用户是指在过去1/7/30天内创建的新账户数量
2 个赞
早上好,@awesomerobot,
我花了一些时间思考这个主题组件,根据你关于“用户”和“活跃用户”的回答,这些信息似乎没有最近更新。我似乎还有这两个指标的两个不同值。
这是我在桌面上的统计数据:
这是我在移动设备上的统计数据:
尽管差异不大,但我似乎无法弄清楚这些统计数据是从哪里提取的。
我尝试像这样实现一个刷新统计数据的 HTML 代码:
<script>
setInterval(function() {
location.reload();
}, 60000); // 每 1 分钟(60000 毫秒)刷新一次
</script>
注意:代码将每 1 分钟(60000 毫秒)重新加载一次页面。您可以根据需要调整间隔。
但我不知道这是否可以添加到设置编辑器中。
非常感谢任何帮助。
1 个赞
更新:
我得出的结论是它应该看起来像这样?
[
{
"setting": "display_stats",
"value": "[{\"source\":\"posts\",\"period\":\"30_days\",\"title\":\"Posts\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"likes\",\"period\":\"30_days\",\"title\":\"Likes\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"active_users\",\"period\":\"30_days\",\"title\":\"Active Users\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"users\",\"period\":\"30_days\",\"title\":\"Sign-Ups\",\"link\":\"\",\"manual_value\":\"\"}]"
},
{
"setting": "banner_title",
"value": "过去 30 天的统计数据"
},
{
"setting": "show_on",
"value": "homepage"
},
{
"setting": "background_color",
"value": "var(--tertiary-low)"
},
{
"setting": "text_color",
"value": "var(--primary)"
},
{
"setting": "min_column_width",
"value": "10em"
},
{
"setting": "hide_on_mobile",
"value": false
},
{
"setting": "plugin_outlet",
"value": "above-main-container"
},
{
"setting": "javascript",
"value": "setInterval(function() { Discourse.__container__.lookup('controller:widget').send('refresh'); }, 3600000);"
}
]
但是,我收到一条错误消息:
javascript:已添加这些设置。请删除它们,然后重试。
这些统计数据是从“关于”页面提取的,它们使用该页面底部表格中的相同数据:
横幅中的数据会根据用户首次看到横幅的时间,以最低统计数据周期进行刷新。
例如,如果您配置的横幅统计数据来自昨天,那么在您首次看到横幅后,它将在 24 小时后刷新其数据。如果横幅配置为仅显示来自上个月的统计数据,则数据将在您首次查看后的一个月刷新(或者如果您清除浏览器 localStorage)。
实施此方法是为了减少请求数量,因此它们被缓存到浏览器的 localStorage 中,而不是在每次查看横幅时都显示更新的统计数据。
此编辑器仅用于编辑现有设置,您在此处根本无法添加新设置(或 javascript)。
如果您希望此横幅更新更频繁,我可以添加一个新设置来禁用缓存。
2 个赞
您好,@awesomerobot
感谢您提供的详细回复和统计数据来源。但我发现,自从我最初安装以来,我的手机上显示的统计数据仍然存在同样的问题。
根据我的理解,我的统计数据现在应该已更新为以下内容:
我也尝试清除浏览器缓存,但没有任何效果。
如果此选项可行,我将不胜感激,因为它将为消费者提供更全面的论坛见解。
2 个赞
这些看起来像是来自 /admin 的统计数据,可能与 /about 的数据略有不同,但无论如何……如果你更新了组件,我添加了一个禁用缓存的设置:

5 个赞
太棒了,运行完美!我启用该设置后,它立即刷新了。这种方法比清除缓存简单得多,因为我一直保持论坛打开状态,还有很多其他的!
感谢您的付出!
2 个赞
有没有办法将周期设置为显示“所有时间”统计信息?
另外,如果我能显示此组件计算出的总“投票数”将是极好的:Topic Voting | Discourse - Civilized Discussion
manuel
(Manuel Kostka)
14
该组件正在从 /about.json 查找统计数据。所以我猜“所有时间”可以很容易地添加,因为它也是一个可用值。
但是,如果您想显示其他统计数据,我猜您需要分叉并调整组件,以便它从可用的地方查找这些值。
2 个赞
因此,既然它不在下拉列表中,我可以在设置 JSON 中手动更新它吗?
manuel
(Manuel Kostka)
16
不,如果您向 manual_value 添加条目,它将仅用静态值替换查找值。也许将此字段命名为 static_value 会更好地传达这一点?
您可以通过将“all-time”周期选择器添加到下拉列表中来获取“all-time”计数:
这只是组件设置文件中的一个简单更改。我在这里推送了一个包含此内容的分支:https://github.com/nolosb/discourse-stat-banner/tree/count。但是,对于 PR,它可能仍然需要一些逻辑来重命名下拉列表中的该变量?
1 个赞
jrgong
(jrgong)
18
有什么方法可以将其限制为特定类别吗?我尝试过放在标题以上的类别出口,并且想至少使用 CSS 将其限制为特定类别,但之后它在任何地方都未显示。
1 个赞
如果您将主题设置 show_on 更改为 everywhere,您就可以使用此 CSS 在单个类别中显示它(将 examplecategory 替换为您相关的类别 slug)
.stat-banner__wrapper {
display: none;
}
body.category-examplecategory {
.stat-banner__wrapper {
display: block;
}
}
1 个赞