# 主题列表预览（旧版）

**URL:** https://meta.discourse.org/t/topic-list-previews-legacy/101646
**Category:** Plugin
**Tags:** deprecated
**Created:** [2018年十一月9日 03:56 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646 "2018-11-09T03:56:38Z")
**Posts on this page:** 20
**Page:** 25

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 17:41 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1436 "2021-02-03T17:41:27Z")

</div>

你能在每个主题的摘要下的 latest.json 中看到灯箱吗？我怀疑 Discourse 在序列化的摘要中包含了这段不需要的 HTML。

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021年二月3日 21:15 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1437 "2021-02-03T21:15:09Z")

</div>

我今天升级到了最新的 Discourse 和 TLP 版本，发现了一个虽小但令人烦恼的问题：点击某些主题时，会出现“闪烁”或重新加载的现象。以下是该效果的录屏：

我通过在测试服务器上进行多次安全模式测试和重建测试，将问题定位到了 TLP 插件。我还在其他一些使用 TLP 的网站上观察到了相同的现象。

复现步骤如下：

1. 访问 [Blenderartists.org](http://Blenderartists.org)
2. 点击一个有回复的主题（回复越多，该现象似乎越明显）

您也可以在以下网站上看到该现象：

- [https://rideabl.es/top（使用](https://rideabl.es/top%EF%BC%88%E4%BD%BF%E7%94%A8) top 查找有回复的主题）
- [Washing Machine Repair](https://se23.life/t/washing-machine-repair/13915)

在移除 TLP 插件并重建后，“闪烁”现象便消失了。

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 21:16 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1438 "2021-02-03T21:16:20Z")

</div>

是的，上面已经报告过，我也已回复。从您的角度来看，这个问题出现多久了？

这看起来是某种奇怪的 Ember 问题（参见上文）。

目前我还没有解决方案。这些 URL 是由 Core 模板（而非 TLP）生成的，并且是合规的。在 TC 上也出现了同样的情况。

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021年二月3日 21:22 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1439 "2021-02-03T21:22:39Z")

</div>

啊，抱歉，我之前没查到那么远。我已经有两个月没更新了（2.7.0.beta1），直到今天更新后才注意到这个问题。

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 21:27 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1440 "2021-02-03T21:27:14Z")

</div>

缩略图没有生效，但链接几乎完全相同（如果你没读过该主题，链接甚至完全一样）？

这是 TLP 的代码：

> <https://github.com/merefield/discourse-topic-previews-sidecar/blob/1eff5bad4b9b4af8053ee0cbcb885188aafe6464/assets/javascripts/discourse/templates/list/topic-list-title.hbr#L5>

这是核心代码：

> <https://github.com/discourse/discourse/blob/61f5d501cb84ee56a56d89a7efae96b871407d43/app/assets/javascripts/discourse/app/templates/list/topic-list-item.hbr#L21>

看出差异了吗？

Meta vanilla 示例：

 ![image](https://global.discourse-cdn.com/meta/original/3X/0/f/0f414ca62675f5993a7686f044c3909d92c72058.png)

TLP 示例：

 ![image](https://global.discourse-cdn.com/meta/original/3X/7/b/7b493199e51e7712ebb3621b0004fa4cb4cf41f4.png)

有答案请寄明信片告知？

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021年二月3日 21:37 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1441 "2021-02-03T21:37:16Z")

</div>

我不清楚 Discourse 中的链接是如何工作的；它们显然不像“普通”超链接那样运作，因为点击后你并不会离开应用。我观察到的现象是，“第二次加载”似乎要慢得多——在我看来，点击链接后，首先是“应用内链接”生效，快速加载内容。与此同时，在后台，整个页面开始重新加载，这需要重新加载整个应用，因此慢得多。是否有可能除了 `a href` 之外，链接上还附加了事件监听器或 `onclick` 事件？

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 21:38 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1442 "2021-02-03T21:38:39Z")

</div>

TLP 标题链接不知何故导致 Ember 框架和浏览器升级为完整的页面调用，而标准的 Discourse 应用仅执行 XHR 请求（无需刷新页面）。在 TLP 中，缩略图点击按此方式运行正常。我相当确定以前并非如此，这非常奇怪。

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 21:56 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1443 "2021-02-03T21:56:38Z")

</div>

情况变得复杂了，是浏览器在做出这个决定吗？

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/9/c9147d4a629e814a2f05c30ec229ff938e4e19da.png)

Meta 上没有问题：

![image](https://cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/3X/8/c/8cb68e39e5b8ac71578a300f83a36e13e0c34e93.png)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 22:05 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1444 "2021-02-03T22:05:11Z")

</div>

哦，我想我知道问题可能出在哪了！整个表面都是可点击区域。它可能因为双击而“生气”了。我去检查一下。

我们或许需要取消表面的点击功能，才能让这个功能正常工作。

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月3日 22:26 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1445 "2021-02-03T22:26:44Z")

</div>

好的 @bartv @_diondiondion

此问题已在插件中修复：[FIX: remove topic list item click event to prevent transition conflict · merefield/discourse-topic-previews-sidecar@6064a59 · GitHub](https://github.com/paviliondev/discourse-topic-previews/commit/6064a5940a80e69ed56a7cbe67f8ded8e33e5d67)  
以及主题组件（TC）：[FIX: remove click event from topic list item component to prevent con… · merefield/discourse-tc-topic-list-previews@7fbe8ca · GitHub](https://github.com/merefield/discourse-topic-list-previews-theme/commit/7fbe8ca0395c8404d22f1da6865626fd0f7fd006)

---

<div class="post-metadata">

### Author: ![lhkjacky](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lhkjacky/32/204198_2.png) [@lhkjacky](https://meta.discourse.org/u/lhkjacky)
#### Post date: [2021年二月3日 23:53 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1446 "2021-02-03T23:53:23Z")

</div>

> [@merefield](#):
>
> 你能在每个主题的摘要下方的 latest.json 中看到 lightbox 吗？我怀疑 Discourse 在序列化的摘要中包含了这段不需要的 HTML。

看起来当摘要包含“inline-onebox”链接时，缩略图会出现重叠。

> “excerpt”: “source: \<a href="[https://t.co/WMHOR1b1cm\](https://t.co/WMHOR1b1cm%5C)” class="inline-onebox"\>[https://twitter.com/gintarosu/status/1304621851075731457/photo/1](https://twitter.com/gintarosu/status/1304621851075731457/photo/1) …",

如果我编辑帖子，在链接前另起一行，重叠问题就解决了。

> “excerpt”: “source: \n\<a href="[https://t.co/WMHOR1b1cm\](https://t.co/WMHOR1b1cm%5C)” class="onebox" target="\_blank" rel="noopener"\>[https://twitter.com/gintarosu/status/1304621851075731457/photo/1](https://t.co/WMHOR1b1cm) \n ",

* * *

如果帖子顶部有图片，摘要中会包含“lightbox”链接。此时摘要文本的字体大小和样式会在图片后发生变化，但不会导致缩略图重叠。

> “excerpt”: “\<a class="lightbox" href="[https://whatever.hk/uploads/default/original/2X/c/c42ca98cb9b3b6c6401c89940259cdc84800c70d.jpeg\](https://whatever.hk/uploads/default/original/2X/c/c42ca98cb9b3b6c6401c89940259cdc84800c70d.jpeg%5C)” data-download-href="[https://whatever.hk/uploads/default/c42ca98cb9b3b6c6401c89940259cdc84800c70d\](https://whatever.hk/uploads/default/c42ca98cb9b3b6c6401c89940259cdc84800c70d%5C)" title="image\_title"\>\n text ",

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月4日 00:03 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1447 "2021-02-04T00:03:49Z")

</div>

您可以尝试在 CSS 中隐藏带有 lightbox 类的锚点。

---

<div class="post-metadata">

### Author: ![lhkjacky](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lhkjacky/32/204198_2.png) [@lhkjacky](https://meta.discourse.org/u/lhkjacky)
#### Post date: [2021年二月4日 01:58 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1448 "2021-02-04T01:58:47Z")

</div>

非常感谢您的帮助。😀

关于字体样式问题，目前我已在所有主题 CSS 中为 tiles-style 的 topic-details、topic-excerpt 和 topic-excerpt-more 添加了 font-size 和 color。这似乎解决了问题。🥰

图片灯箱链接的代码仍然隐藏在摘要中。我认为 Discourse 应该将其完全移除。这些代码似乎除了增加网页体积外没有任何作用。🤔

 ![2021-02-04_100436](https://global.discourse-cdn.com/meta/original/3X/e/6/e69f1236e01e2b5574fb540beb0df7eb1d94638d.jpeg)

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021年二月4日 07:24 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1449 "2021-02-04T07:24:06Z")

</div>

没错，问题解决了，谢谢罗伯特！

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月4日 12:34 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1450 "2021-02-04T12:34:51Z")

</div>

> [@lhkjacky](#):
>
> 我认为 Discourse 应该彻底移除它。

是的，我同意。我不愿覆盖后端，因为这应该保持原生实现。我也不愿通过 JavaScript 来移除它。如果 CSS 方案可行，那目前就是正确的做法。

欢迎在此与社区分享你的 CSS 代码 :)。

---

<div class="post-metadata">

### Author: ![lhkjacky](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lhkjacky/32/204198_2.png) [@lhkjacky](https://meta.discourse.org/u/lhkjacky)
#### Post date: [2021年二月4日 21:07 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1451 "2021-02-04T21:07:29Z")

</div>

> [@merefield](#):
>
> 欢迎在此与社区分享您的 CSS 代码 :)。

我只需为 topic-details、topic-excerpt 和 topic-excerpt-more 设置字体大小和颜色。这样可以避免图片前后摘要部分的字体样式不一致。😀

```
.tiles-style .topic-details {
font-size: 14px;
color: var(--primary-high);
}

.tiles-style .topic-excerpt {
font-size: 14px;
}

.tiles-style .topic-excerpt-more {
font-size: 15px;
color: var(--tertiary);
}

```

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021年二月5日 08:24 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1452 "2021-02-05T08:24:40Z")

</div>

从本周起，我开始注意到缩略图选择器存在问题。在某些主题上它能正常工作，而在另一些主题上则持续失败并显示为空，但我尚未发现任何规律。[这是一个它失效的主题](https://blenderartists.org/t/kinetic-observatory/1280457)。我在控制台中没有看到任何消息，也没有网络请求问题。

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/1/c12c15b78185e9c3d703454fa0b2f311e7dace43.jpeg)

以下是我点击“选择缩略图”按钮时的响应：

 ![image](https://global.discourse-cdn.com/meta/original/3X/f/1/f141dca350772b197bb2d822e56a7ac89342c43a.png)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月5日 12:34 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1453 "2021-02-05T12:34:08Z")

</div>

修复“间隙”问题的快速方法如下：

```css
.topic-list .topic-excerpt {
    padding-right: 0px;
}

```

我怀疑这是非平铺视图遗留的问题。我可能会将此修复加入平铺视图的 CSS 中。

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2021年二月5日 12:38 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1454 "2021-02-05T12:38:02Z")

</div>

是的，这并非 100% 完美。

以下是当前的标准集。如果您能发现明显的遗漏，我很乐意考虑，但这套标准与 Discourse 核心逻辑所使用的标准非常接近。

> <https://github.com/merefield/discourse-topic-previews-sidecar/blob/6064a5940a80e69ed56a7cbe67f8ded8e33e5d67/lib/thumbnail_selection_helper.rb#L3>

---

<div class="post-metadata">

### Author: ![bartv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bartv/32/130052_2.png) [@bartv](https://meta.discourse.org/u/bartv)
#### Post date: [2021年二月5日 12:54 UTC](https://meta.discourse.org/t/topic-list-previews-legacy/101646/1455 "2021-02-05T12:54:03Z")

</div>

哈，当然现在它才管用：脸palm。

[上一頁](https://meta.discourse.org/t/topic-list-previews-legacy/101646.md?page=24)

[下一頁](https://meta.discourse.org/t/topic-list-previews-legacy/101646.md?page=26)
