Discourse 贴纸

安装此主题组件


Discourse Stickers v1.0

你好 :wave:

通过这个主题组件,你可以在帖子和聊天消息中添加贴纸…

工作原理?

它会在编辑器中放置一个按钮,点击后打开贴纸选择窗口。

贴纸选择窗口

当你点击一个贴纸时,它会将其添加到编辑器中。
图像 Markdown 代码会放在 [wrap=sticker] img [/wrap] 中,这意味着贴纸图像可以与其他图像分开进行样式设置。

贴纸始终会换行,并包含标题和尺寸。目前尺寸固定为 180x180px。每个贴纸都有一个阴影,使图像更具贴纸感…
在编辑器和帖子中,悬停时的元信息通过 CSS 隐藏。


如何设置?

首先,你需要上传想要用作贴纸的图片。只需将这些图片上传到某个主题帖子中即可。
我们将使用这些图片,因为我们需要图片 URL 和 Markdown URL。

示例:
我在帖子中上传了图片。我使用了图片 URL 的 optimized 版本。它可以在这里找到 :arrow_down_small: 但你可以使用图片的任何 URL。

括号内的 Markdown 上传 URL :arrow_down_small:


设置

贴纸图片
在贴纸图片设置中,你可以配置贴纸…

标题:这是图片的标题和替代文本。它也会进入 Markdown 代码的标题中。

表情符号:它将显示在贴纸选择窗口中每个贴纸的右上角。

previewUrl:这是在贴纸选择窗口中显示的图像。

markdownUrl:这是之前上传的图片的 Markdown URL。



Discourse Stickers v2.0

你好 :wave:

通过这个主题组件,你可以在帖子、回复和聊天消息中添加贴纸

2.0 版本引入了重新设计的贴纸管理器,支持原生图片上传、贴纸分组、基于类别的可见性以及聊天特定控制。

工作原理?

该组件会在编辑器中添加一个贴纸按钮。点击它会打开贴纸选择器。

当你选择一个贴纸时,它会直接插入到编辑器中。

对于常规帖子和回复,贴纸会被包裹在:

[wrap=sticker]![Sticker title|180x180](image)[/wrap]

这使得贴纸图像可以独立于常规图像进行样式设置。

已发布的贴纸不可点击,并且不会打开 Discourse 灯箱。


贴纸选择器

当你拥有大量贴纸时,贴纸选择器支持分组

如果配置了多个组,选择器顶部将显示一个过滤栏。

没有分组的贴纸会自动放置在其他下。

如果当前上下文没有可用的贴纸,选择器将显示空状态。


如何设置?

贴纸配置在 v2.0 中已完全重新设计。

不再需要先上传图片到主题或手动复制图片 URL

只需进入组件设置并添加贴纸。图像字段允许你直接上传贴纸。

贴纸设置

每个贴纸现在可以具有以下属性:

标题

贴纸的名称。这用作贴纸的工具提示和替代文本。

分组

可选。使用分组来组织你的贴纸,并在选择器中进行过滤。

留空会将贴纸放置在其他下。

表情符号徽章

可选。在贴纸的角落显示一个小表情符号。

你可以使用实际的表情符号或 Discourse 短代码,如 :heart::smile:

图像

贴纸图像。

使用设置直接上传图像。选择器和发布的贴纸使用相同的图像。

类别

可选。将贴纸限制在特定类别。

如果选择了类别,贴纸仅在选择其中一个类别时才会出现在常规帖子/回复编辑器中。

留空将使贴纸在所有类别中可用。

此设置不影响聊天。

从私信中隐藏

启用后,贴纸将无法在私人/私信聊天中使用。

聊天频道

可选。将贴纸限制在特定的公共聊天频道。

输入以逗号分隔的频道 ID。

例如,如果频道 URL 是:

/chat/c/channel-name/123

使用:

123

留空将使贴纸在所有公共/类别聊天频道中可用。


从 v1.x 升级

如果你已经在使用该组件的旧版本,你不需要重新创建你的贴纸集合

v2.0 包含一个设置迁移功能,自动将旧的 sticker_images 配置转换为新格式。

迁移将保留:

  • 贴纸标题
  • 表情符号徽章
  • 已上传的现有贴纸图像

已上传的现有图像将解析回其原始 Discourse 上传,并填充到新的图像字段中。

旧的 previewUrlmarkdownUrl 设置不再需要。

只需更新组件,你现有的贴纸应该会自动迁移。


17 个赞

你好 Don :wave:

干得好!我快速看了一下 :slight_smile:

管理贴纸有点麻烦——尤其是预览部分——因为没有专门的布局或功能来做这件事(就像头像和自定义表情一样),但我理解这会需要更多的工作。

当 GIF 停止时,阴影滤镜会被禁用,并且不会显示在此处中间图像上的方形背景(一个触发灯箱的矩形 jpg):

chrome_k71dGHbeLH

滤镜效果真的很棒,但我会将其设置为可选设置 :slight_smile:

贴纸选择器使用诸如:

XXX
 X 

但我认为我更喜欢右对齐:

XXX
X 

当然,这只是我个人的看法 :v:

5 个赞

感谢您的反馈 @Canapin :slight_smile:

我为此添加了一个新设置…
Screenshot 2023-10-03 at 16.04.17

这个也完成了… 好多了 :slight_smile:

7 个赞

更新:DEV: Adding DTooltip to sticker picker modal images · VaperinaDEV/discourse-stickers@b6c30eb · GitHub

5 个赞

是否可以将其限制为特定类别?(而且,就此而言,每个类别都有不同的贴纸?)

1 个赞

如果允许管理员创建贴纸组,并且用户可以根据自己喜欢的每个主题组自定义贴纸选择。
此外,当用户在文章中使用图标时,可以根据已安装的图标进行推荐,但我认为这是一个很难实现的功能。

我可以在文本行中放置贴纸,而不是在新行中放置贴纸吗?(我已 fork 了此仓库)

你好 :waving_hand:

是的,您必须删除此行开头和结尾的 \n


@mattdm :waving_hand: 抱歉耽搁了。是的,我认为可能可以为每个类别在编辑器中显示按钮。我需要检查一下。

该组件的设置已经有点复杂了。我不确定这个。:thinking:

你好 :waving_hand: 是的,这是另一个级别。:slightly_smiling_face: 我不确定现在是否可以通过此内置功能实现。

1 个赞

谢谢回复!
但更改后,贴纸无法显示,如下所示

哦,抱歉,我认为你应该也删除 [wrap=sticker] 和 [/wrap]。它将使图片内联显示,所以可能不会丢失。:thinking:
[wrap=sticker] 仅用于给贴纸图片添加一些样式。

我明白了,行内显示不能使用 [wrap=sticker]
它奏效了,谢谢!

ps:我想知道是否可以隐藏 Composer 中的 markdownUrl,因为它是一个很长的 URL,会占用太多空间?

Discourse Stickers v2.0

此次发布对该组件进行了相当重要的现代化升级。除了多项内部改进外,贴纸配置也经过重新设计,使得管理大型贴纸集变得更加轻松。

:artist_palette: 完全重新设计的贴纸设置

v2.0 最大的变化在于贴纸配置本身。

旧版本将贴纸存储为包含以下值的 JSON 设置:

  • title

  • emoji

  • previewUrl

  • markdownUrl

在 v2.0 中,这已被替换为 Discourse 原生的 objects 设置类型

现在,每个贴纸都是一个拥有独立字段的正式可配置对象:

  • 标题 - 贴纸名称/工具提示文本

  • 分组 - 可选地将贴纸组织成组

  • Emoji 徽章 - 可选地在角落显示一个小 Emoji

  • 图片 - 通过设置直接上传贴纸

  • 分类 - 可选地将贴纸限制在特定分类中

  • 从私信中隐藏 - 控制贴纸是否在私信中可用

  • 聊天频道 - 可选地将贴纸限制在特定的公共聊天频道中

这使得贴纸配置更易于理解和维护,尤其是对于大型贴纸集而言。

:bento_box: 贴纸分组与筛选

现在可以将贴纸分配到 分组 中。

当存在多个分组时,贴纸选择器会自动在顶部显示筛选栏。

你可以在以下选项之间切换:

  • 全部

  • 各个分组

  • 其他,用于未分配分组的贴纸

筛选器是根据当前用户可用的贴纸动态生成的。

:label: 特定分类的贴纸

现在可以将贴纸可选地分配给特定的 Discourse 分类。

如果贴纸配置了分类,则仅在选择这些分类之一时,它才会出现在常规帖子/回复编辑器中。

如果未配置任何分类,则该贴纸在所有地方均可用。

:speech_balloon: 对聊天贴纸进行更多控制

v2.0 增加了对 Discourse 聊天中贴纸可用性的更多控制。

你现在可以:

  • 在私信中隐藏单个贴纸;

  • 将贴纸限制在特定的公共聊天频道中;

  • 将频道设置留空,以使贴纸在所有公共/分类聊天频道中可用。

这允许管理员为社区的不同部分维护不同的贴纸集。

:prohibited: 已发布的贴纸不再可点击

已发布的贴纸现在被视为非交互图像。

点击它们时不再打开 Discourse 灯箱。

这适用于:

  • 常规帖子中的贴纸;

  • 聊天中发布的贴纸。

目的是让贴纸的行为更像实际的贴纸/反应内容,而不是普通的上传图像。

:empty_nest: 更好的空状态

如果当前上下文中没有可用的贴纸,选择器现在会显示适当的空状态,而不是简单地显示一个空的选择器。

例如,当分类或聊天限制导致没有任何贴纸可用时,就会发生这种情况。

:counterclockwise_arrows_button: 现有的贴纸配置已迁移

v2.0 最重要的部分之一是,现有安装 无需重新创建其贴纸集

更新组件时,旧的 sticker_images JSON 设置会自动迁移到新的 objects 格式。

现有的贴纸标题和 Emoji 值将保留。

最重要的是,现有的上传贴纸图像也会自动迁移。

因此,如果你已经配置了数十个贴纸,升级到 v2.0 不需要你重新上传所有贴纸

旧的 markdownUrl 属性不再需要,也不会被迁移,因为新的 Image 字段代表了实际的 Discourse 上传。


3 个赞