我目前正在考虑将新的 Unified New 视图用作我 Discourse 站点的主信息流/主页,但我希望它的行为能更像 X/Twitter 或 Facebook。
我想实现的效果是:
-
一个主题出现在 Unified New 信息流中。
-
用户向下滚动,该主题曾出现在他们的视口(viewport)中。
-
一旦用户滚动超过该主题,Discourse 就认为该主题对该用户而言已“已读”或“已忽略”。
-
如果用户刷新页面或稍后再次访问 /new,该主题将不再显示。
理想情况下,我不希望该行在滚动时立即消失,因为这可能会导致页面跳动。我只希望它在后台被标记为已读/已忽略,以便在下一次加载时不再显示。
我还使用了 Don’s Topic Preview Modal,它已经会预取视口周围的帖子。因此,我希望能够区分主题仅仅是被预取了,还是用户真正看到了它。
例如,大致逻辑如下:
主题至少 50% 可见并持续 200–400ms → 标记为已读 → 用户滚动超过它 → 从 Unified New 中移除。
有人实现过类似的功能吗?
是否有现成的 Discourse API 或前端方法可以针对当前用户从 Unified New 中移除单个主题,还是这需要开发一个插件/主题组件?
我基本上是想将 Unified New 转变为一个更个性化的“你尚未看到的内容”滚动信息流,而不是要求用户实际打开每个主题。
4 个赞
我认为这目前还不是一项功能,所以我会把它转到 Contribute > Feature 频道。
虽然已有批量操作功能,但在滚动浏览时仅仅“勾选”一下感觉并不是很流畅。
1 个赞
既然主题弹窗已经使用了预取(pre-fetch),我会看看能否实现一个组件,在预取完成时自动关闭。
有没有办法让 /new 仅作为已登录用户的首页?显然,未登录用户访问时会收到 404 错误。
这样有帮助吗?
你可以把这里的 “latest” 改成 “new”。我试过了,我觉得有效。
Moin
5
2 个赞
现在我知道了,其实有更简单的做法……只是需要找到它而已。
1 个赞
这个主题可以关闭或删除。我并没有完全理解 /new 的作用,我以为它会显示过去 x 小时内的帖子。显然它并不是这样,所以这会让新用户看到一个空白页面。
1 个赞