プラグインとテーマコンポーネントの使い分け

いくつかのビューに小さな変更を加える必要があります。
例:

CSSのみのような非常に小さな変更であっても、変更ごとにプラグインを作成する必要がありますか?
ご協力ありがとうございます。

「いいね!」 1

いいえ、プラグインはバックエンドを変更する場合にのみ必要です。

ローカルの変更だけであれば、管理画面 → カスタマイズ → テーマ に移動し、新しいテーマコンポーネントに変更を入力してから、現在のテーマに追加できます。

https://meta.discourse.org/c/documentation/theme-developers/127 を参照してください。特に以下をご覧ください。

「いいね!」 8

ありがとうございます!
ラベルを変更したり、ツールチップを追加したりする場合はテーマを作成する必要があり、ページに新しい列を追加する場合(たとえば、トピックリスト)はプラグインを作成する必要があるということですね。

違いは以下の通りです。

  • APIを変更する必要がある場合(例:.jsonルートのデータ、認証の変更、データのバックエンド処理など)、プラグインが必要です。
  • 異なるデータが不要な多くのフロントエンドの変更、つまり多くの表示上の変更や、機密性のないJavaScriptのロジックについては、TCのみが必要です。
「いいね!」 5

そして、グレーゾーン(ここでは当てはまらないと思いますが)は、利用できないデータ(ユーザーカスタムフィールドなど)が必要な場合、必要に応じてJavaScriptでAJAXを使用してそのデータを取得するか、シリアライザーにデータを追加するプラグインを用意するか、のいずれかです。

「いいね!」 5

わかりました、ありがとうございます。ガイドでは、リモートの例しかありませんが、TCをローカルでセットアップしてインポートする方法がわかりません。

ローカルで簡単にTCを作成できるこの素晴らしいツールを使用することをお勧めします。

「いいね!」 2

非常に小さなCSSの変更でない限り、リモートテーマまたはCLIツールの使用をお勧めします。

しかし、「テーマのインストール」をクリックすると、テーマ(またはコンポーネントページで実行した場合はテーマコンポーネント)を作成できるダイアログが表示されます。

カテゴリトピックリスト内に、「created_at」列を持つ新しい列を追加し、日付を「tiny」から拡張(例:DD/MM/YYYY HH:MM)に変更する必要があります。

テンプレートに新しいものを追加したい場合は、まず GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes を参照することをお勧めしますが、そこに列を追加する方法はわかりません。おそらくJavaScriptのマジックを使えばできるのでしょうが、それは私の専門外です。

その情報が表示されていることにマウスオーバーすれば気づくはずですよね?

Plugin outlet locations theme component も参照してください。ただし、そこにはプラグインのアウトレットはありません。

「いいね!」 2

これらのプラグインのアウトレットがあります: topic-list-after-columnstopic-list-header-after

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/list/topic-list-item.hbr#L90

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/topic-list-header.hbr#L27

よく気がつきました。そこに出口がないのは間違っているように思えました。テーマコンポーネントが表示しないだけだと思います。

「いいね!」 1

プラグインアウトレットの場所テーマコンポーネントは、現在生のコンセントを表示していません。

このテーマコンポーネントは、列を追加する方法を示しています GitHub - discourse/discourse-add-category-column

「いいね!」 3