你好,
我的 Discourse 论坛已经基本搭建并运行起来了,但有一位成员提出了一个我暂时找不到解决方案的问题。该社区正在从另一个论坛迁移过去,在那个平台上,你可以生成一个指向某个话题中最近阅读位置的链接,用户通常会将其添加到浏览器书签中。不过,我还没在 Discourse 中找到实现这一功能的方法,大家有什么建议吗?
谢谢,
Jody
你好,
我的 Discourse 论坛已经基本搭建并运行起来了,但有一位成员提出了一个我暂时找不到解决方案的问题。该社区正在从另一个论坛迁移过去,在那个平台上,你可以生成一个指向某个话题中最近阅读位置的链接,用户通常会将其添加到浏览器书签中。不过,我还没在 Discourse 中找到实现这一功能的方法,大家有什么建议吗?
谢谢,
Jody
Discourse 会自动为我完成这个功能。当我点击一个主题时,它会把我带到上次阅读的位置。你指的是这个吗?![]()
恐怕不行。点击主题列表中的主题时跳转的 URL 是针对您上次阅读位置的具体链接,而不是一个表示“带我去我上次所在的位置”的通用链接。因此,如果您收藏了该链接,之后继续阅读该主题,再返回该书签时,它会带您回到最初跳转的位置,而不是您最近离开的地方。我想要的是一个通用的“我在该主题中上次所在位置”的 URL,可以存储在浏览器中,并且无论该主题被阅读了多少,它都能持续有效。
不过,那个书签不是记录了主题中的具体位置吗?所以,每次离开前,他们是不是都得显式地添加一个新书签?
不,它不存储;是的,它们会。
据我所知,Discourse 不存储最后访问的主题,但会存储每个主题的最后访问时间戳(topic_users.last_visited_at),因此应该可以找到最后访问的主题并将其显示出来。但这需要一个插件或一个调用 Discourse API 的外部小部件。
以下内容仅为了对该主题进行完整性补充。
如前所述,最接近您需求的方法是使用书签:
为主题添加书签。书签将带您回到第一篇文章,除非您已经阅读了整个主题,在这种情况下,您将停留在最后一篇文章。但时间线可以显示一个“返回”按钮,让您回到该主题中最后阅读的文章——请查看此截图的最右侧:
为某篇文章添加书签,按定义将允许您回到该特定文章。主题和文章书签的组合用法在此处有讨论。
正如您所指出的,书签对于您的用途存在两个不足:
除非使用插件或其他软件来创建书签,否则书签通常需要用户手动操作才能设置。
书签总是返回到用户选择的特定主题(即第一篇文章)或特定文章。没有选项可以设置一个由软件在访问书签时动态决定的主题或文章作为返回目标。
您提到的那个 URL 总是可以带出最后阅读的文章,因为论坛软件会自动存储该数据。这很有用,因为我们并不总是知道何时会在论坛中停止阅读——它可能因系统重启、系统用户或应用用户注销,或意外崩溃而中断。
Discourse 目前没有返回到最后查看文章的选项,但我认为这将是一个有用的功能。
附言:
不过,Discourse 确实有一个功能,即使在“书签”中也能显示您在上次访问中查看过的主题,这有助于您了解最后查看的是哪个主题:
其他人也曾研究过提取最后访问数据,例如:
感谢您如此详尽的回答,这真的很有帮助,尽管最终结果确实是目前我们无法实现想要的功能。
确实如此。令人烦恼的是,我从未编写过 Ruby 代码,否则我可能会亲自尝试。我猜这可能工作量太大,因为主题列表会确定用户在某个主题中最后阅读的帖子,并生成相应的 URL。因此,您可以创建一个新 URL,例如 t/topic-title/133114/latest,然后将其重定向到正确的位置。
关于PS,嗯,我会看一下。问题是,我们有大量话题会持续数百条回复,你可能几周甚至更久没有查看特定话题,之后又想重新查看,并希望能够通过浏览器书签直接跳转过去。
但这样的话,该 URL 仅适用于一个主题。
而“最新”视图则非常适合这种场景,因为所有自上次访问以来有编辑或新发布的众多主题,都会显示在上次访问分界线之上。
嗯,是啊,但自从你上次进去之后,可能已经有 40 到 50 个甚至更多的话题发生了变化 ![]()
抱歉,我误读了您之前的回复。
您之前的意思是,用户希望返回到上次访问时正在阅读或进行的对话,即使该话题没有更新。
这正是我想要的自动恢复功能,但我认为 Discourse 团队可能不会采纳这个方案。
我想并不完全是这样。人们会关注许多不同的话题。在论坛的特定类别中,有数十个乃至数百个长期存在的帖子话题,其中许多人会关注大量话题。他们显然喜欢偶尔进来,阅读大量帖子,但可能不会一次性读完,而是稍后再回来继续阅读。有些人还喜欢将这些帖子添加到浏览器书签中。
不过,我认为书签标签页可能是一个合理的替代方案,因为你确实说对了,该视图确实能带你回到上次离开的位置,而且还可以按类别进行筛选。
谢谢。
在此期间,我会引导用户前往 /unread;我通常把首页设置为未读页面。![]()
既然你深入回答中的附言就是解决方案,那我就把那条回复选为答案了。说实话,即便没有那个附言,那条回复也非常棒,内容真的很详实。
感谢你的鼓励,我正有意识地通过涵盖各种选项来创作更多有帮助的帖子。