すべてのトピックにトピックの抜粋を追加する方法

コミュニティの皆様、こんにちは。

Discourse の仕組みを少しハックしようとしたところ、excerpt(抜粋)が表示されるのはピン留めされたトピックだけであることに気づきました。トピックのシリアライザーを更新してこの excerpt 属性を取得することも可能ですが、バックエンドをいじるのはメンテナンスが難しくなるため、クライアント側のみの対応に留めたいと考えています。

そこで質問です。
ピン留めされたトピックと通常のトピックの違いは何で、なぜピン留めされたトピックだけが抜粋を表示できるのでしょうか?

画像は千の言葉に勝ると言いますね。こちらが最新のページでのローカル環境です。ご覧の通り、抜粋が表示されているのはピン留めされたトピックだけです。なぜでしょうか? また、Discourse テーマを使ってこれをどのように変更できるでしょうか?

抜粋はトピックをピン留めすると有効になるため、「不可能だ」と仮定するのはおかしいように思えます。おそらく必要なのは、発見ページ(discovery topics page)で実行されるクエリを調整し、常に抜粋を取得するようにすることだと思います。しかし、正直なところ、この分野でのハッキング経験があるにもかかわらず、Discourse 内のデータフローの仕組みをまだ十分に理解できていません。

Discourse のデータフローの仕組みについてのドキュメントも参考になります。

よろしくお願いいたします!

テーマで要約のオプトインが可能になりました!これは非常に最近の変更で、まだガイドにドキュメント化されていないと思います。

例はこちらでご確認ください:

とても良いですね、@Falco さん

ちょうど Alexis さんにお答えしようとしていたのですが、皆さんが入力されているのを見ました。

彼の一般的な質問に少しお答えすると、データの含めるかどうかは、主に使用されているシリアライザーによって決定されます。

この例を確認しようとしたところ、以下を見つけました:discourse/app/serializers/listable_topic_serializer.rb at 094ddb1c1ffcd305e841dfa1efd6981507519054 · discourse/discourse · GitHub

具体的には:

  def include_excerpt?
    pinned || SiteSetting.always_include_topic_excerpts || ThemeModifierHelper.new(request: scope.request).serialize_topic_excerpts
  end

これですぐにわかりますね :slight_smile:

会話に遅れてしまい、本当に申し訳ありません。ありがとうございます!hahaha。でも、とにかく、超迅速に対応してくださって本当に感謝しています。投稿された瞬間に読みましたが、スマホにいてプラットフォームにログインできなかったんです。ありがとうございます!:blush:

検索で見つけた方のために、現在はこちらを使用できます: Topic List Excerpts