他のサイトへの Discourse フォーラム全体を iframe で埋め込む

これはすでに2つのスレッドで議論されていますが、それらはロックされています:

一部の人は、既存のサイトのデザインに合わせて Discourse のリブランディングを進めるべきだと述べています。

経験上、これは非常に困難です。マークアップとそのマークアップ用の CSS は非常に複雑で、柔軟性に欠けます。例えば、Discourse のヘッダーとメインコンテンツの DOM ツリーは、互いに非常に異なっています。ヘッダーコンテンツを挿入すると(Discourse の組み込みエディターを使用)、実際の Discourse ヘッダーから非常に離れた位置にコンテンツが配置されてしまいます。

「Discourse をメインサイトのテーマに従わせる」こと自体が非常に難しいことを信じてください。

次に試してみたいのは、Discourse を <iframe> に埋め込むことです。それがどうなるか見てみましょう。


機能リクエスト!Discourse をカスタム要素のセットとして利用できると素晴らしいでしょう。例えば:

<!-- ... いくつかのカスタムマークアップ ... -->

<discourse-actions backend="http://url.to/actual/discourse/instance">

<!-- ... いくつかのカスタムマークアップ ... -->

<discourse-main backend="http://url.to/actual/discourse/instance">

これにより、Discourse の各部をサイトのどこにでも埋め込むことができ、要素は指定されたバックエンドに接続されます。

http://url.to/actual/discourse/instance に直接アクセスすると、Discourse は通常の Web アプリケーションとして独立して開かれます。

基本的には、これにより Discourse の各部を全体の HTML 構造(Handlebars テンプレートのパーシャルなど)内で利用可能にし、将来性のあるウェブ標準に基づいた方法で実現できます。

このような機能があれば、backend 属性に異なる値を持つカスタム要素を考えた場合、他にも何が可能になるか想像してみてください…

Discourse を iframe で使用しようとするのを私たちが止められるわけではありませんが、他のトピックでも注意されている通り、それは不安定で問題が発生する可能性が高いと予想されます。また、iframe 関連の問題を解決するために時間を費やす予定はありません。

むしろ、Discourse のテーマ作成で直面している問題を詳細に説明していただく方が、私たちが支援したり、プロセスを改善したりするのに役立ちます。過去数年でテーマ作成機能は大幅に改善されており、可能な範囲でサポートと改善を続けていきたいと考えています。

カスタマイズが他の要素よりも明らかに難しい部分もあります。その一例がヘッダーです。これはパフォーマンス向上のために仮想 DOM(Virtual DOM)が実装されているためです(https://meta.discourse.org/t/a-tour-of-how-the-widget-virtual-dom-code-in-discourse-works/40347)。

したがって、ヘッダーにコンテンツを追加したい場合は、管理 UI から前後にコンテンツを追加するのではなく、そのシステムを活用する必要があります(Developing Discourse Themes & Theme Components の「高度なプラグイン API」セクションで一部解説されています)。また、既存の #theme-component でヘッダーのコンテンツを操作する良い例もあります(Custom Header Links など)。

「いいね!」 9

これがあるといいですね。試してみましたが、まだ動作しません。ただ、このスクリーンショットが表示されるだけです。

「いいね!」 1