カスタムBBCodeのサポートにおける最善の対応策は?

皆様、こんにちは。

さまざまな理由から、Discourse を当社のフォーラムソフトウェアの代替手段として検討しています。しかし、現在解決すべき大きな課題の一つは、当サイトでサポートしているすべての BBCode をどう扱うかという点です。詳細は以下のページをご覧ください:Tutorial - RpNation - BBcode Guide | RpNation および Tutorial - RpNation - BBCode+ Guide | RpNation

vBulletin BBCode プラグイン を参考にすると、既存の機能をそのまま追加するのはそれほど難しくないように思われます。ガイドに記載されている通り、単純なものから、安全な方法で HTML をある程度使用できるようにするカスタム div BBCode(投稿に独自の ID セレクタを生成し、ユーザーが投稿コンテナの外側にある要素をターゲットにできないようにするもの)まで、さまざまなカスタム BBCode をサポートしています。

この仕組みにより、過去数年間で非常に素晴らしい投稿が多数作成されました。以下は、たまたま見つけた簡単な例です:

ここで質問ですが、これを BBCode プラグインとして実装すべきでしょうか、それとも当社の BBCode で行っているように HTML セレクタを投稿内に安全に制限する方法を開発し、そちらを提案すべきでしょうか?

HTML の使用を許可することには、正直なところ抵抗があります。

ユーザーが引き続き投稿をフォーマットできる機能を維持しつつ、すべてのセキュリティを確保したいと考えています。

「いいね!」 2

新しいソフトウェアを検討されている理由がわかります。Tutorial - RpNation - BBcode Guide | RpNation の読み込みに私でも2分かかってしまいました :scream:

image

新聞、チャレンジ、サイドなどのカスタムスタイルは、Generic bbcode wrapper for theme components と CSS で実現可能だと思います。

また、コードハイライト、上下付き文字、中央揃えブロック、テーブル、引用、インラインスポイラー、区切り線、見出し、メディア埋め込みなど、多くの機能は Discourse に標準搭載されています。

「いいね!」 6

おや、それはひどいですね。私たちは Cloudflare とそこそこ強力な AMD Ryzen サーバーを運用していますが、ログアウト状態で全てのアセットを読み込むのに約2秒です。

確かにこれを検討中です。つまり、テーマコンポーネントに任意の HTML/CSS を追加し、それをカスタム BBCode タグで呼び出すことができるのでしょうか?
[blah]content[/blah] のように?

この場合、私たちの機能の一部を以下のように再現できるかもしれません:

[wrap=bg bg=blue] または [wrap=random-name newspaper=1]

ただし、大量のコンテンツの書式が失われないようにするため、プラグインのフォーマットのようなものを使用するのが最善かもしれません。また、複数のオプション引数も必要です。

「いいね!」 3

Discourse BBCode をご覧ください。他のコードのサポートを追加するのは比較的簡単だと思います(ただし、正直なところ、どうやってやるのかを理解するのに苦労しました…)

「いいね!」 2

もっともなご意見ですね。もし追加する予定があれば、最初からそのガイド全体を1つの投稿にまとめてウィキ化しておけばよかったかもしれません。複数の投稿に分かれていると、個人的な見解ですが、読み進めたり内容を理解したりするのが難しくなり、スペースの無駄も生まれてしまいます。

「いいね!」 1

なんて素晴らしい、大好きです

また、Discourse はデフォルトで、特別なラッパー内だけでなく、投稿コンテンツのどこでも制限された HTML をサポートしている点にも注意してください。例えば、この投稿は <div align=justify> で囲まれています。残念ながら、これはいくつかのインライン書式設定に干渉し、段落内のすべてに HTML を強制してしまいます。

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

「いいね!」 2

そのbbcodeガイドは、ウィキ投稿機能を持たない別のフォーラムソフトウェアに存在します。

素晴らしいですね。ただ、私たちはHTMLを安全にするために誰もが使えるようにする方法を探すよりも、その1つのプラグインを拡張してbbcodeとして追加することを好むと思います。

「いいね!」 2

[quote=“pfaffman, 投稿:4, トピック:148941, full:true”]
Discourse BBCode をご覧になることをお勧めします。他のコードのサポートを追加するのは比較的簡単だと思います(正直なところ、私がそれをどうやって行うかを見つけるのに苦労しましたが…)。[/quote]

公式の Discourse BBCode プラグインは、私たちの Discourse プラグイン開発スキルが低いため、このプラグインよりも修正が難しいことがわかりました。

Awesome BBCodes プラグイン

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

「Awesome BBCodes プラグイン」は、フォーク、クローン、ハッキング/修正が非常に簡単でした。「Discourse BBCode」プラグインよりもはるかに簡単です。

カスタム BBCode の作成を検討している方(@TheDarkWizard さん)への私の提案は、「Awesome BBCodes プラグイン」から始めて、そこからハッキングを進めることです。

「いいね!」 3

ああ、ごめんなさい。まさに移行すべき理由ですね! :slight_smile:

どういたしまして :slight_smile:

確認してみます。ありがとうございます!

「いいね!」 1