# 主题列表预览（TLP）

**URL:** <https://meta.discourse.org/t/topic-list-previews-tlp/209973>\
**Category:** Theme component\
**Created:** [2021年十一月23日 12:25 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973 "2021-11-23T12:25:59Z")\
**Posts on this page:** 20\
**Page:** 9

<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:** [2022年七月10日 20:45 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/162 "2022-07-10T20:45:45Z")

</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:** [2022年八月6日 13:31 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/163 "2022-08-06T13:31:24Z")

</div>

## 瓦片增强和瓦片内部布局更改

 ![image](https://global.discourse-cdn.com/meta/original/4X/8/1/1/811873d7c82e5d461e75bde50947dc7917f1d8bc.jpeg)

> <https://github.com/merefield/discourse-tc-topic-list-previews/pull/22>
>
> \* Rearrange items to make better use of space, specifically:
> \* move posters t…o tile footer, allowing more width for title, category, tags
> \* ensure posters just take up one line, add number representing number of additional posters if large list
> \* wrap meta to leave space for more posters
> \* move tags alongside Category and continue to allow them to wrap
> \* optimise padding
> \* Add new share button ⛓️ so you can share a topic straight from the Topic List
> \* Various fixes to action button behaviour and formatting
> \* Removal of grey bar at top of topic list
> \* Reduction of redundancy in CSS (esp. between desktop and mobile).

我和 @nathank 一直在致力于优化瓦片内部的布局。

- 重新排列项目以更好地利用空间，特别是：
  - 将发帖人移至瓦片底部，为标题、类别、标签腾出更多宽度
  - 确保发帖人只占一行，如果列表很长，则添加数字代表其他发帖人的数量
  - 包装元信息以留出更多发帖人的空间
  - 将标签移至类别旁边，并继续允许它们换行
  - 优化填充

- 添加新的分享按钮 ⛓，以便您可以直接从主题列表中分享一个主题 🚀
- 对操作按钮的行为和格式进行各种修复
- 移除主题列表顶部的灰色条
- 减少 CSS 中的冗余（尤其是在桌面和移动设备之间）。

**注意：建议您先在测试站点上进行测试，以仔细检查您的 CSS 覆盖是否正常工作。**

感谢 @nathank 对这项工作的支持、测试结果并提出许多宝贵的建议。

注意：我稍微自定义了我的瓦片，让发帖人从右侧开始，默认情况下与核心一样从左侧开始：

```plaintext
.topic-list.tiles-style {
  .topic-users {
    justify-content: flex-end;
  }
}

```

您可能会注意到元信息现在默认已换行。这是出于无奈，因为我们试图最大化可以显示的帖子数量。如果/当浏览器支持容器查询时，我将重新审视这一点，以便我们可以根据帖子数量来确定元信息的宽度。

---

<div class="post-metadata">

**Author:** ![ddf](https://avatars.discourse-cdn.com/v4/letter/d/f475e1/32.png) [@ddf](https://meta.discourse.org/u/ddf)\
**Post date:** [2022年八月23日 09:46 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/164 "2022-08-23T09:46:31Z")

</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:** [2022年八月23日 10:04 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/165 "2022-08-23T10:04:11Z")

</div>

可以。安装 sidecar 插件，在主题元编辑器后面有一个 UI 可供选择缩略图。

如果您无法安装插件，也可以像核心功能一样选择缩略图。

在主题中，如果您想选择与 OP 不同的图片，请在 markdown 中添加 `|thumbnail`。例如：

```plaintext
![alttext|100x100](upload://aaa)
![alttext|100x100|thumbnail](upload://bbb) << 这个将是缩略图

```

UI 插件解决方案更好，因为您可以选择任何帖子中的任何图片。Markdown 解决方案仅限于 OP。

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月8日 11:33 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/166 "2022-09-08T11:33:16Z")

</div>

> [@merefield](#):
>
> [🙋‍♀️ 请求功能](https://thepavilion.io/w/feature-request)

@merefield 由于链接的功能请求向导不再激活，我将在此处发布。

对于 sidecar 插件，是否有办法允许管理员（版主、管理员）更改用户的缩略图？

---

<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:** [2022年九月8日 11:42 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/167 "2022-09-08T11:42:53Z")

</div>

> [@jrgong](#):
>
> 对于 sidecar 插件，有什么方法可以允许工作人员（版主、管理员）更改用户的缩略图吗？

这应该已经可以了，你遇到了什么问题吗？

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月8日 12:01 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/168 "2022-09-08T12:01:32Z")

</div>

> [@merefield](#):
>
> 这应该已经可以了，你遇到了什么问题吗？

是的。作为管理员，我无法更改其他用户的帖子的缩略图。我已经尝试过更新帖子的 HTML。或者我需要重新烘焙吗？

我们运行的是最新的通过测试版本。

---

<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:** [2022年九月8日 12:17 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/169 "2022-09-08T12:17:04Z")

</div>

您在日志中收到错误消息了吗？它在哪个点失败？我相信您正在使用提供的用户界面？

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月8日 12:26 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/170 "2022-09-08T12:26:22Z")

</div>

日志中无内容  
提示中未显示任何图像  
不确定您所说的“UI provided”是什么意思，但这是问题的快速演示：

![CleanShot 2022-09-08 at 14.25.04](https://global.discourse-cdn.com/meta/original/4X/d/a/1/da1665d6e0ffca5dcd507b49253b49039d6c3255.gif)

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月8日 12:33 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/171 "2022-09-08T12:33:06Z")

</div>

顺便说一句，还有另一个小问题：

即使未为主题列表激活 TLP，以下 CSS 也会偷偷出现：

```plaintext
.mobile-view .topic-list .right {
  margin-left: 95px;
}

```

见视频：

![CleanShot 2022-09-08 at 14.32.24](https://global.discourse-cdn.com/meta/original/4X/f/5/2/f524530c13d6511a20b7db0083e473e54125c8a9.gif)

---

<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:** [2022年九月8日 12:39 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/172 "2022-09-08T12:39:08Z")

</div>

抱歉，您目前需要是用户或管理员：

> <https://github.com/merefield/discourse-topic-previews-sidecar/blob/7447d53ecf657f4137dd9096362dc6cd7b03c8b5/controllers/thumbnail_selection.rb#L14>

我很乐意将其作为一项功能请求，以扩展到版主。

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月8日 12:59 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/173 "2022-09-08T12:59:08Z")

</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:** [2022年九月8日 13:16 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/174 "2022-09-08T13:16:28Z")

</div>

图片是否已上传？它们必须有一个上传 ID。

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月8日 13:36 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/175 "2022-09-08T13:36:14Z")

</div>

罗伯特您好

我找到了 **问题！作为管理员，该问题仅出现在侧边栏插件安装之前的帖子的** 主题中。

> [@merefield](#):
>
> 我很乐意将其视为一项功能请求，以将其扩展到版主

❤ 我们的版主一定会对此感到非常高兴 🙂

---

<div class="post-metadata">

**Author:** ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)\
**Post date:** [2022年九月8日 14:21 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/176 "2022-09-08T14:21:52Z")

</div>

这是因为我们为 jrgongs 论坛设置了暂存站点，将图像存储在原始论坛的 S3 存储桶中，而暂存站点指向该存储桶。暂存站点具有不同的 `current_db` 名称，因此 `Post::each_upload_url` 无法找到上传项。  
它失败的原因不是因为在安装 sidecar 插件之前发布了帖子，而是在将生产站点复制到暂存站点之前发布的帖子。

---

<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:** [2022年九月8日 17:19 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/177 "2022-09-08T17:19:36Z")

</div>

啊……我需要做什么吗？

---

<div class="post-metadata">

**Author:** ![AdamAndrews](https://avatars.discourse-cdn.com/v4/letter/a/ee7513/32.png) [@AdamAndrews](https://meta.discourse.org/u/AdamAndrews)\
**Post date:** [2022年九月8日 21:55 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/178 "2022-09-08T21:55:07Z")

</div>

在更新我的 discourse 实例后，我注意到精选主题（已设置 featured 标签的主题）在初始页面加载时不再显示，并且在手动选择类别、最新等主题列表之前不会出现。在这种情况下，我将用户界面设置 **默认主页** 设置为类别，这以前一直按预期工作。如果将最新、新或未读设置为 **默认主页** ，精选主题将按预期显示在页面上，而无需手动选择主题列表。如果选择类别或热门，它们将不会出现，直到用户手动更改主题列表。我不确定是我错过了什么，还是 discourse 核心的某个更改改变了这种行为。

---

<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:** [2022年九月9日 07:14 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/179 "2022-09-09T07:14:31Z")

</div>

完成。  
您现在应该可以作为版主访问缩略图了。

> <https://github.com/merefield/discourse-topic-previews-sidecar/pull/172>

这还修复了一个明显的逻辑错误，这里是赋值而不是等价检查！ 😮 👍  
UI 和安全逻辑确实需要在此处进一步改进。如果您不符合条件，按钮应该被隐藏。我稍后会在 TC 中跟进。此外，API 在此逻辑方面并未得到妥善保护，因为它目前所做的只是阻止您看到按钮。它需要进一步更改才能完全保护它。但考虑到这是一个风险很低的操作，我认为这不是一个重大的优先事项。

---

<div class="post-metadata">

**Author:** ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)\
**Post date:** [2022年九月9日 08:09 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/180 "2022-09-09T08:09:26Z")

</div>

> [@merefield](#):
>
> 我需要你采取什么行动吗？

不用了，这基本上是虚惊一场，谢谢！

---

<div class="post-metadata">

**Author:** ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)\
**Post date:** [2022年九月9日 08:43 UTC](https://meta.discourse.org/t/topic-list-previews-tlp/209973/181 "2022-09-09T08:43:21Z")

</div>

> [@merefield](#):
>
> UI 和安全逻辑确实需要进一步改进。如果您不符合条件，按钮应该隐藏。我稍后会在 TC 中跟进……此外，就此逻辑而言，API 的安全性不够，因为它目前只是阻止您看到按钮。它需要进一步的更改才能完全保护它。但考虑到这是一个风险很小的操作，我认为这不是一个重大优先事项。

谢谢修复！我们将在将其部署到生产环境后进行测试 🙂

您能否将“选择缩略图”按钮 **仅显示在 TLP tc 中已启用缩略图的类别或标签的主题上** ？或者这将是一个较大的实现工作量？

[上一頁](https://meta.discourse.org/t/topic-list-previews-tlp/209973.md?page=8)

[下一頁](https://meta.discourse.org/t/topic-list-previews-tlp/209973.md?page=10)
