Don
1
Discourse Stickers v1.0
你好 
通过这个主题组件,你可以在帖子和聊天消息中添加贴纸…
工作原理?
它会在编辑器中放置一个按钮,点击后打开贴纸选择窗口。
贴纸选择窗口
当你点击一个贴纸时,它会将其添加到编辑器中。
图像 Markdown 代码会放在 [wrap=sticker] img [/wrap] 中,这意味着贴纸图像可以与其他图像分开进行样式设置。
贴纸始终会换行,并包含标题和尺寸。目前尺寸固定为 180x180px。每个贴纸都有一个阴影,使图像更具贴纸感…
在编辑器和帖子中,悬停时的元信息通过 CSS 隐藏。
如何设置?
首先,你需要上传想要用作贴纸的图片。只需将这些图片上传到某个主题帖子中即可。
我们将使用这些图片,因为我们需要图片 URL 和 Markdown URL。
示例:
我在帖子中上传了图片。我使用了图片 URL 的 optimized 版本。它可以在这里找到
但你可以使用图片的任何 URL。
括号内的 Markdown 上传 URL 
设置
贴纸图片
在贴纸图片设置中,你可以配置贴纸…
标题:这是图片的标题和替代文本。它也会进入 Markdown 代码的标题中。
表情符号:它将显示在贴纸选择窗口中每个贴纸的右上角。
previewUrl:这是在贴纸选择窗口中显示的图像。
markdownUrl:这是之前上传的图片的 Markdown URL。
Discourse Stickers v2.0
你好 
通过这个主题组件,你可以在帖子、回复和聊天消息中添加贴纸。
2.0 版本引入了重新设计的贴纸管理器,支持原生图片上传、贴纸分组、基于类别的可见性以及聊天特定控制。
工作原理?
该组件会在编辑器中添加一个贴纸按钮。点击它会打开贴纸选择器。
当你选择一个贴纸时,它会直接插入到编辑器中。
对于常规帖子和回复,贴纸会被包裹在:
[wrap=sticker][/wrap]
这使得贴纸图像可以独立于常规图像进行样式设置。
已发布的贴纸不可点击,并且不会打开 Discourse 灯箱。
贴纸选择器
当你拥有大量贴纸时,贴纸选择器支持分组。
如果配置了多个组,选择器顶部将显示一个过滤栏。
没有分组的贴纸会自动放置在其他下。
如果当前上下文没有可用的贴纸,选择器将显示空状态。
如何设置?
贴纸配置在 v2.0 中已完全重新设计。
你不再需要先上传图片到主题或手动复制图片 URL。
只需进入组件设置并添加贴纸。图像字段允许你直接上传贴纸。
贴纸设置
每个贴纸现在可以具有以下属性:
标题
贴纸的名称。这用作贴纸的工具提示和替代文本。
分组
可选。使用分组来组织你的贴纸,并在选择器中进行过滤。
留空会将贴纸放置在其他下。
表情符号徽章
可选。在贴纸的角落显示一个小表情符号。
你可以使用实际的表情符号或 Discourse 短代码,如 :heart: 或 :smile:。
图像
贴纸图像。
使用设置直接上传图像。选择器和发布的贴纸使用相同的图像。
类别
可选。将贴纸限制在特定类别。
如果选择了类别,贴纸仅在选择其中一个类别时才会出现在常规帖子/回复编辑器中。
留空将使贴纸在所有类别中可用。
此设置不影响聊天。
从私信中隐藏
启用后,贴纸将无法在私人/私信聊天中使用。
聊天频道
可选。将贴纸限制在特定的公共聊天频道。
输入以逗号分隔的频道 ID。
例如,如果频道 URL 是:
/chat/c/channel-name/123
使用:
123
留空将使贴纸在所有公共/类别聊天频道中可用。
从 v1.x 升级
如果你已经在使用该组件的旧版本,你不需要重新创建你的贴纸集合。
v2.0 包含一个设置迁移功能,自动将旧的 sticker_images 配置转换为新格式。
迁移将保留:
已上传的现有图像将解析回其原始 Discourse 上传,并填充到新的图像字段中。
旧的 previewUrl 和 markdownUrl 设置不再需要。
只需更新组件,你现有的贴纸应该会自动迁移。
17 个赞
Canapin
(Coin-coin le Canapin)
2
你好 Don 
干得好!我快速看了一下 
管理贴纸有点麻烦——尤其是预览部分——因为没有专门的布局或功能来做这件事(就像头像和自定义表情一样),但我理解这会需要更多的工作。
当 GIF 停止时,阴影滤镜会被禁用,并且不会显示在此处中间图像上的方形背景(一个触发灯箱的矩形 jpg):

滤镜效果真的很棒,但我会将其设置为可选设置 
贴纸选择器使用诸如:
XXX
X
但我认为我更喜欢右对齐:
XXX
X
当然,这只是我个人的看法 
5 个赞
Don
4
5 个赞
mattdm
(Matthew Miller)
5
是否可以将其限制为特定类别?(而且,就此而言,每个类别都有不同的贴纸?)
1 个赞
如果允许管理员创建贴纸组,并且用户可以根据自己喜欢的每个主题组自定义贴纸选择。
此外,当用户在文章中使用图标时,可以根据已安装的图标进行推荐,但我认为这是一个很难实现的功能。
我可以在文本行中放置贴纸,而不是在新行中放置贴纸吗?(我已 fork 了此仓库)
Don
8
你好 
是的,您必须删除此行开头和结尾的 \n。
嘿 @mattdm
抱歉耽搁了。是的,我认为可能可以为每个类别在编辑器中显示按钮。我需要检查一下。
该组件的设置已经有点复杂了。我不确定这个。
你好
是的,这是另一个级别。
我不确定现在是否可以通过此内置功能实现。
1 个赞
Don
10
哦,抱歉,我认为你应该也删除 [wrap=sticker] 和 [/wrap]。它将使图片内联显示,所以可能不会丢失。
[wrap=sticker] 仅用于给贴纸图片添加一些样式。
deltaR
11
我明白了,行内显示不能使用 [wrap=sticker]?
它奏效了,谢谢!
ps:我想知道是否可以隐藏 Composer 中的 markdownUrl,因为它是一个很长的 URL,会占用太多空间?
Don
12
Discourse Stickers v2.0
此次发布对该组件进行了相当重要的现代化升级。除了多项内部改进外,贴纸配置也经过重新设计,使得管理大型贴纸集变得更加轻松。
完全重新设计的贴纸设置
v2.0 最大的变化在于贴纸配置本身。
旧版本将贴纸存储为包含以下值的 JSON 设置:
-
title
-
emoji
-
previewUrl
-
markdownUrl
在 v2.0 中,这已被替换为 Discourse 原生的 objects 设置类型。
现在,每个贴纸都是一个拥有独立字段的正式可配置对象:
这使得贴纸配置更易于理解和维护,尤其是对于大型贴纸集而言。
贴纸分组与筛选
现在可以将贴纸分配到 分组 中。
当存在多个分组时,贴纸选择器会自动在顶部显示筛选栏。
你可以在以下选项之间切换:
筛选器是根据当前用户可用的贴纸动态生成的。
特定分类的贴纸
现在可以将贴纸可选地分配给特定的 Discourse 分类。
如果贴纸配置了分类,则仅在选择这些分类之一时,它才会出现在常规帖子/回复编辑器中。
如果未配置任何分类,则该贴纸在所有地方均可用。
对聊天贴纸进行更多控制
v2.0 增加了对 Discourse 聊天中贴纸可用性的更多控制。
你现在可以:
这允许管理员为社区的不同部分维护不同的贴纸集。
已发布的贴纸不再可点击
已发布的贴纸现在被视为非交互图像。
点击它们时不再打开 Discourse 灯箱。
这适用于:
目的是让贴纸的行为更像实际的贴纸/反应内容,而不是普通的上传图像。
更好的空状态
如果当前上下文中没有可用的贴纸,选择器现在会显示适当的空状态,而不是简单地显示一个空的选择器。
例如,当分类或聊天限制导致没有任何贴纸可用时,就会发生这种情况。
现有的贴纸配置已迁移
v2.0 最重要的部分之一是,现有安装 无需重新创建其贴纸集。
更新组件时,旧的 sticker_images JSON 设置会自动迁移到新的 objects 格式。
现有的贴纸标题和 Emoji 值将保留。
最重要的是,现有的上传贴纸图像也会自动迁移。
因此,如果你已经配置了数十个贴纸,升级到 v2.0 不需要你重新上传所有贴纸。
旧的 markdownUrl 属性不再需要,也不会被迁移,因为新的 Image 字段代表了实际的 Discourse 上传。
3 个赞