支持自定义BB代码的最佳行动方案是什么?

大家好,

出于多种原因,我们确实正在考虑将 Discourse 作为我们论坛软件的替代方案。但我们需要解决的一个关键问题是:如何处理我们网站上目前支持的所有 BBCode。相关说明可参考:Tutorial - RpNation - BBcode Guide | RpNation 以及 https://www.rpnation.com/threads/rpnation-bbcode-guide.388933/。

参考 vBulletin BBCode 插件,似乎并不太难为我们现有的功能添加支持。正如指南中所示,我们有各种自定义 BBCode,从简单的功能到自定义的 div BBCode,后者允许用户在安全的前提下在一定程度上使用 HTML,它会为帖子生成一个自定义的 ID 选择器,用户无法定位到帖子容器之外的任何内容。

多年来,这使人们能够创建出一些非常出色的帖子。这里有一个我随便浏览时找到的示例:

我的问题是:我们应该将其开发为一个 BBCode 插件,还是尝试创建一种安全的方法,像我们处理 BBCode 那样将 HTML 选择器限制在帖子内部,并研究这种方法,然后提供该方案?

不过,一想到允许用户使用 HTML,我就感到有些不安。

我们希望继续让用户能够格式化他们的帖子,同时确保所有内容保持安全。

2 个赞

我理解你为什么要寻找新软件了,加载 Tutorial - RpNation - BBcode Guide | RpNation 对我来说需要两分钟::scream:

image

我相信你所有的自定义样式,比如报纸、挑战、侧栏等,都可以通过 Generic bbcode wrapper for theme components 和 CSS 实现。

而且很多功能在 Discourse 中已经内置了,比如代码高亮、上标/下标、居中块、表格、引用块、内联Spoiler、分隔线、标题、媒体嵌入等等。

6 个赞

哦不。那听起来太糟糕了。我们运行的是 Cloudflare 加上一台配置不错的 AMD Ryzen 服务器。对我来说,未登录状态下加载所有资源大约需要两秒。

我们确实正在研究这个。也就是说,我们可以在主题组件中添加任意 HTML/CSS,然后通过自定义的 bbcode 标签来调用它?
[blah]内容[/blah]

所以在这种情况下,我们可以用以下方式重现部分内容:

[wrap=bg bg=blue][wrap=random-name newspaper=1]

不过,也许最好还是采用类似插件的格式,这样大量内容才不会丢失格式。此外,还需要支持多个可选参数。

3 个赞

你可以看看 https://meta.discourse.org/t/discourse-bbcode/65425。我认为添加对其他代码的支持应该相对容易(尽管,说实话,我之前在弄清楚如何实现时遇到了一些困难……)

2 个赞

难道你不能在觉得需要添加更多内容时,把整个指南放在一个帖子中并制作成 Wiki 吗?将其分散在多个帖子中,在我看来会让阅读和理解变得更加困难,而且浪费了很多空间。

1 个赞

太棒了,我超级喜欢

另外请注意,Discourse 开箱即用即支持在帖子内容中的任意位置使用部分受限的 HTML,而不仅限于特殊包装内。例如,本帖子就被包裹在 <div align=justify> 中。遗憾的是,这确实会影响一些内联格式,迫使段落中的所有内容都必须使用 HTML。

https://meta.discourse.org/raw/148941/8

2 个赞

那个 bbcode 指南位于另一款论坛软件中,该软件不支持维基帖子。

太棒了。不过,我们更倾向于将其保留为 bbcode,通过扩展那个插件来添加,而不是寻找一种方法给所有人提供更多需要确保安全的 HTML。

2 个赞

我们发现官方 Discourse BBCode 插件比这个插件更难修改(因为我们的 Discourse 插件开发技能有限):

Awesome BBCodes 插件

Awesome BBCodes Plugin: multi-paragraph, nestable, with auto-complete

“Awesome BBCodes 插件”非常容易进行 fork、克隆和修改/调整,比“Discourse BBCode”插件简单得多。

我的建议是,任何(@TheDarkWizard)想要创建自定义 BBCode 的人,都应该从“Awesome BBCodes 插件”开始,并在此基础上进行修改。

3 个赞

啊,抱歉,没错,这更是迁移的理由!:slight_smile:

没问题 :slight_smile:

我会去看看。谢谢!

1 个赞