TLDR:
最快的改变 filteredTopics(第 26 行)组成方式的方法是什么?我想完全控制收集哪些主题(以及它们的属性)。
大家好,
我一直在我们的托管环境中使用 GitHub - discourse/discourse-topic-thumbnails: Display thumbnails in topic lists 主题组件,并且我们希望对其进行更多更改以满足我们的需求。
我们希望将所有主题从混合在一起的大块网格项中区分开来。
我们的目标是:
首先,我们想按已读/未读排序,其次按类别排序;然后,我们想按时间顺序对它们进行分组(并创建存储桶,例如今天(今天的所有相关帖子)、昨天、上周)。
所以我们的主题列表应该如下所示,下面有 3 个不同的网格:
<TODAY, YESTERDAY, LAST WEEK> 代表一个分组
置顶:
主题 20、主题 30、主题 40
未读:
<今天:[艺术:主题 1、主题 2]、[设计:主题 4]> <昨天:[概念:主题 3]、[其他类别:主题 6、主题 11]> <上周:主题 8、主题 10>
已读:
<今天:[艺术:主题 4、主题 12]、[设计:主题 4]> <昨天:[CGI:主题 13]、[其他类别:主题 16、主题 21]> <上周:主题 18、主题 100>
我的主要问题是如何创建/扩展用于生成结果集的查询,该结果集随后在
通过 filteredList 进行迭代。
我找到了一个可能填充它的地方,但不确定如何“扩展”它。似乎有一个 queryParam 系统和一些可以影响结果集的路由内容,但我没有理解。
有人能指出正确的地方吗?
我们正在使用上述主题组件,这意味着我们在可以做什么方面受到限制。
如果有人能向我展示如何仅将 filteredList 限制为未读帖子主题,那将对我很有帮助——然后我就可以自己解决了。
非常感谢!
CC @pfaffman
是的,谢谢,我注意到了,但错过了正确的术语。正在调整。
Jammy,我添加了一个tldr。你对这个缩短的问题有什么线索吗?
谢谢
恐怕这超出了我的能力范围。 
您是否查看了 Developing Discourse Themes & Theme Components 中的如何修改类?也许里面有什么可以帮助您。如果您拓宽关键词,搜索也能找到一些有用的示例?
是的,谢谢你,Jammy,我知道这些事情,而且我还写了一些私有插件(或对其进行了扩展)。但问题是,我不明白列表在哪里聚合,以及整个 QUERYING TOPICs 逻辑是如何工作的,或者它实际上在哪里。如果我知道这两件事中的任何一件,我就可以继续前进。
由于我在 Git 代码中看到了这些人,因此我将把他们添加为抄送。
仅供参考,以这种方式标记团队成员是极其糟糕的 Meta 礼仪,因此我已删除这些标记,以免形成他人可能模仿的模式。
很抱歉您的主题未能获得更多关注。我对此并不了解,因此恐怕无法直接回答。
您的研究/尝试有进一步的进展吗?
我以为我把正确的人抄送给他们很聪明🤣
而且没有,我还没有取得任何进展。我尝试了三次显示主题列表,然后在每个主题中隐藏不需要的主题,但之后“加载更多”功能启动了,DOM 的大部分被重写了,我的 JS 计算变得太重,导致了奇怪的效果。
我想我必须使用 Discourse 提供的 API 正确地完成它。
我在这里取得了重大进展,并且在此过程中还有一些问题:
- 是否有我可以用来获取所有已固定主题的 API 端点?类似于 /latest.json 或 /top.json?
- 是否有我可以在插件中使用(假设我在插件中)的 JS 命令来强制主题列表在我对主题列表项的状态进行更改后重新渲染,以便更改立即反映出来?我想我必须使用 topics. 的观察者?
另外,我找到了以下文章,其中包含了我自定义所需主题列表所需的一切。
https://meta.discourse.org/t/how-to-add-a-featured-topic-list-to-your-discourse-homepage/132949
可以通过查询 /search.json?expanded=true&q=in%3Apinned 来获取置顶主题
在没有实际搜索关键字的情况下使用搜索。
这只会返回主题 ID 列表,或者可以说是一个简化的主题数据集。您必须发出后续的 ajax 请求到 /t/${topic.id}.json 来获取围绕主题的完整数据集。
我仍然对如何通过 JS 强制重新渲染主题列表感兴趣。