もしよろしければ、このためのガイドや例をご存知の方はいらっしゃいますか?
例えば、テーマコンポーネントを使ってサイドカラムを作成する場合、そのサイドカラムやテーマコンポーネントに、最新の公開されているトピック20件(あるいは、クエリで指定したカテゴリからのトピック)を一覧表示するにはどうすればよいでしょうか?
もしよろしければ、このためのガイドや例をご存知の方はいらっしゃいますか?
例えば、テーマコンポーネントを使ってサイドカラムを作成する場合、そのサイドカラムやテーマコンポーネントに、最新の公開されているトピック20件(あるいは、クエリで指定したカテゴリからのトピック)を一覧表示するにはどうすればよいでしょうか?
これにはいくつかの方法があります。最も簡単な方法は、表示したいデータを提供する Rails API のエンドポイントに対して Ajax 呼び出しを行うことです。最新の 20 件のトピックを取得したい場合は、/latest.json を試してみてください。
課題は、複数のエンドポイントから情報を組み合わせる必要がある場合、複数の呼び出しが完了するのを待つ必要があり、それがテーマコンポーネントのパフォーマンスを大幅に低下させる可能性があることです。
返信ありがとうございます、ジャスティン ![]()
Discourse が既に提供しているフィードやデータを簡単に再利用する方法はありませんか?(そうすれば、そのユーザーの設定も反映されます。)
例えば、サイドカラムに以下のようなものを配置したいとします:
これは他のフォーラムプラットフォームでは比較的簡単に実現できるのですが、Discourse ではそれができなくて本当に残念です ![]()
その通りです。関連するエンドポイントを Ajax 呼び出しすると、ユーザーの現在の設定が反映されます。
/latest.json にアクセスすると、そのユーザーが見られる最新のトピックのみが表示されます。
同じパスに .json を追加して GET リクエストを送信し、どのような結果が得られるか試してみてください!
そのアプローチは、結局それらのエンドポイントが実行するクエリをデータベースに直接投げることとほぼ同じではないでしょうか?(あるいは、エンドポイントごとに5ページ分の追加読み込みが発生するのと同じくらいリソースを消費するのでしょうか。)
いずれにせよ、この仕組みを実際に試してみたいと考えています。テーマコンポーネント内でエンドポイントからデータを取得する方法を示すガイドやチュートリアルはありますか?(それとも、プラグインを作成する方が優れている、あるいは効率的でしょうか?)
テーマコンポーネントの作成方法や「ダミー」プラグインの作成方法は理解していますが、データベースからこれらのコンポーネントやプラグインにデータを取得する方法を示すガイドは見つけられていません。
https://meta.discourse.org/t/how-to-add-a-featured-topic-list-to-your-discourse-homepage/132949
このガイドでは特定のタグを使った方法を紹介していますが、実際にはこのアプローチを任意のエンドポイントに適用して同様の結果を得ることができます。