🖼️ 主题图库

:information_source: 摘要 为每个主题添加一个画廊视图
:eyeglasses: 预览 点击查看画廊示例
:hammer_and_wrench: 仓库链接 https://github.com/Canapin/discourse-topic-gallery
:open_book: 安装指南 如何在 Discourse 中安装插件

描述

主题画廊在一个专用页面上显示讨论中的所有图片。

用例

非常适合以图片为中心或用户发布大量图片的社区和/或类别。
它允许获得完整的图片体验,而不会受到常规主题界面和其他内容的干扰。

您可以 此处 试用。这主要是一个测试实例,因此可用性不能保证。

功能

主要功能

  • 无限滑动![1]

  • 用户和日期过滤器

  • 从给定帖子开始画廊

  • 特定群组访问权限

  • 基于类别的排除

  • 当前打开的图片下方有指向源帖子的链接,因此您永远不会迷失方向:
    Gallery Topic source post link

  • 鼠标悬停时显示分组的图片(属于同一帖子):
    Topic Gallery grouped pictures

从主题导航到画廊

有几个按钮可用于从主题导航到画廊:

  • 时间轴下方:

  • 主题末尾:
    Topic Gallery topic button

  • 在每个帖子中(可在设置中禁用):
    Topic Gallery post button
    :information_source: 如果我们从帖子中打开画廊,画廊将进行过滤,仅显示从该帖子开始的图片。您可以通过单击来取消此过滤:
    image

画廊 URL

画廊 URL 语法与常规主题相同,但 /t/ 被替换为 /gallery/

https://canapin.discourse.diy/t/share-your-pictures/10
:backhand_index_pointing_down:
https://canapin.discourse.diy/gallery/share-your-pictures/10

还有一个公共 JSON 端点:
https://canapin.discourse.diy/gallery/share-your-pictures/10.json

安全与查询

  • 功能访问权限限制在允许的群组和允许的类别内。
  • 画廊限制为有权访问其源主题的用户。

上传查询排除:

  • 保留帖子中图片的顺序
  • 非用户上传的图片
  • 非帖子引用(自定义表情符号、头像等)
  • 当前用户无权访问的帖子的上传内容,这意味着:
    • 悄悄话(如果当前用户看不到悄悄话)
    • 隐藏的帖子
    • 已删除的帖子
    • 被忽略用户的帖子

画廊行为

  • 不显示热链接的图片。

  • 不显示小图片(最小分辨率可在设置中更改)。

  • 重复的图片只显示一次。

  • 引用中的图片会显示。

设置

名称 类型 默认值 描述
topic_gallery_enabled boolean true 启用主题画廊插件。
topic_gallery_allowed_groups group_list admins 允许访问主题画廊的群组。
topic_gallery_minimum_image_size integer (0–1000) 64 图片显示在画廊中的最小宽度和高度(以像素为单位)。任一维度小于此值的图片将被排除。
topic_gallery_excluded_categories category_list "" 禁用主题画廊的类别。这些类别中的主题将不会显示画廊按钮或画廊页面。
topic_gallery_post_menu_button boolean true 在每个帖子中显示一个画廊按钮。

:information_source: 默认情况下,该插件仅对管理员启用。请访问设置以启用其他群组。


  1. 到达第一批图片的末尾会自动加载并附加下一批图片。 ↩︎

13 个赞

我终于发布了这个插件 :slight_smile:
你可以在这里查看预览:Gallery - Share your pictures! - Canapin

2 个赞

这是一个很棒的想法和实现。
稍后会试一下,但有没有办法添加图片描述,使其在图片弹出窗口中显示在图片下方?

1 个赞

我认为您可以使用 alt 文本:

![此处是一些替代文本](upload://...)

您也可以点击上方的图片查看替代文本。

2 个赞

啊,这是我的疏忽。这个插件的 photoswipe 配置似乎显示的是原始文件名而不是自定义标题。我会修复这个 :slight_smile:

2 个赞

@Canapin 为什么不使用内置的 Discourse lightbox()

据称,虽然我可以使用内置的灯箱(这是我在该插件的早期版本中所做的),但我无法根据我的需求对其进行配置和调整。特别是,我无法让它与我的无限加载/滑动方法进行交互,因此我不得不使用自己的方法。

1 个赞

很遗憾,我无法修复这个问题。图片标题是写在帖子的内容中,没有存储在任何表中。

出于性能原因,我的查询不返回帖子内容,因此我无法解析它来检索标题。

我想我只能保留文件名了。尽管这些信息很少有价值……:thinking:
未修改的文件名通常会揭示图片的来源。

例如在我的测试实例中:

  • image.png → “image” 文件名是直接粘贴到编辑器中的图片

  • Gemini_Generated_Image_8h4wt58h4wt58h4w.jpg → 猜猜看

  • ComfyUI-ExtraMD-Large_315126945425344_00000.jpg → 本地 AI 图像生成器

  • the-tattooer-is-totally-right-v0-s2f8spm3l-D5908.jpg → 可能从网站上保存的

  • cropped-android-chrome-512x512-1-32x32.png → 智能手机截图

等等。

1 个赞