有人能想到一种方法,可以自动为使用 discourse-math 插件渲染公式的帖子授予自定义徽章吗?
我完全不知道从哪里开始。
有人能想到一种方法,可以自动为使用 discourse-math 插件渲染公式的帖子授予自定义徽章吗?
我完全不知道从哪里开始。
你好 @agf1997
同意 Discourse 数学插件做得很好,是网站的绝佳补充。
一种方法是聘请 Discourse 插件开发者为你修改数学插件,以便在论坛成员使用该插件时更新数据库中的自定义字段。
然后,你可以在徽章管理区域创建一个简单的数据库查询来颁发徽章。
希望这能帮到你。
这显然不是一个关键任务功能。我只是想找一个简单的方法,利用数学排版功能来突出显示某些人,从而鼓励其他人也使用它。
你好 @agf1997
正如我所提到的,你需要为此编写插件代码。
这意味着你有两个选择:
无论你决定朝哪个方向发展,都需要修改或扩展数学插件,以便在论坛成员使用该插件时更新数据库中的自定义字段。
希望这能帮到你。
是的,您可以为成功的数学帖子授予徽章,而无需修改插件。
首先,您需要在网站上启用 默认情况下无法再编辑徽章 SQL。
之后,创建一个新的徽章,触发条件为以下查询:
SELECT user_id, MIN(id) AS post_id, current_timestamp AS granted_at
FROM badge_posts
WHERE cooked LIKE '%<span class="math">%' AND (:backfill OR id IN (:post_ids) )
GROUP BY user_id
嘿 @Falco
这是一个非常棒的徽章查询。
问题:
您是否有所有可在徽章查询中用于触发条件的 Discourse :symbols 的完整列表?
我之所以这么问,是因为我看到您使用了 :backfill 和 :post_id,而当我查看这个链接时,发现还使用了其他 Ruby :symbols:
是否有简洁的参考文档,列出可在徽章查询中使用的 Discourse Ruby symbols?
我找到了这篇与徽章触发相关的文章(在您上面的帖子之后),非常有帮助:
在该 Discourse 文章中,提到了以下触发辅助符:
这三个是“全部”了吗?
非常感谢您的帮助!
@Falco 太棒了!快速问个问题……这应该适用于之前的帖子吗?当我点击“预览已授予的徽章”时,显示“没有可分配的徽章”。
点击“使用查询计划预览”则显示:
GroupAggregate (cost=2021.68..2021.70 rows=1 width=16)
Group Key: p.user_id
-> Sort (cost=2021.68..2021.68 rows=1 width=8)
Sort Key: p.user_id
-> Nested Loop (cost=0.28..2021.67 rows=1 width=8)
Join Filter: (t.category_id = c.id)
-> Nested Loop (cost=0.28..2017.97 rows=1 width=12)
-> Seq Scan on posts p (cost=0.00..2009.66 rows=1 width=12)
Filter: ((deleted_at IS NULL) AND (cooked ~~ '%<span class="math">%'::text) AND (post_type = ANY ('{1,2,3}'::integer[])))
-> Index Scan using topics_pkey on topics t (cost=0.28..8.30 rows=1 width=8)
Index Cond: (id = p.topic_id)
Filter: ((deleted_at IS NULL) AND visible)
-> Seq Scan on categories c (cost=0.00..3.35 rows=28 width=4)
Filter: (allow_badges AND (NOT read_restricted))