トピックリストのホームルーターを変更 - 最新からフォロー中へ

こんにちは、皆さん!

デフォルトのホームトピック一覧のルーターを変更しようとしているのですが、まだ方法が見つかりません!皆さんのお力を貸していただけると嬉しいです。

「最新」から「フォロー中」(私がフォローしているユーザーが作成したトピック)に変更したいと考えています。

私が試した方法

  • 最も効率的な方法は、トップメニューに「フォロー中」を追加することでしたが、うまくいきませんでした。
  • 他の方法として、Custom Top Navigation Links をインストールしました。これにより制御ナビゲーションリンクを追加できましたが、ルートパス「/」ではまだ「最新」が表示されてしまいます。
  • さらに、「discourse/app/routes/app-route-map.js」内の「filters」定義を操作する方法も試しましたが、これもうまくいきませんでした。
    • this.route("discovery", { path: "/", resetNamespace: true }, function () {

私の目標

これは可能でしょうか!?

皆さんのご協力を期待しています!
よろしくお願いいたします、
フェリペ

最近の PR が参考になるかもしれません。

ここでは、デフォルトの表示オプションに「ブックマーク」を追加しました:

最も大変だったのはテストケースの追加でした!:slight_smile:

これはプラグインへの PR と考えています。難しい点は、現在、表示対象がある場合のみ表示されることです。そのため、その点を考慮する必要があります。

こんにちは、ロバートさん!
ご指摘いただいたPRの2つのファイルを変更しました。

  • discourse/app/models/user_option.rb
    • when 7 then “following”
  • discourse/app/controllers/preferences/interface.js
    • USER_HOMES定数に “following” を追加

しかし、うまくいきませんでした。これらの変更で「Top menu」サイト設定を選択できるかと思ったのですが。もし「latest」が必要であれば、「following」→「latest」の順に設定すれば、ホームが「following」にリダイレクトされるはずです。

開発中に以下の方法を見つけました。

import { setDefaultHomepage } from 'discourse/lib/utilities';

コンポーネントの冒頭に以下を追加しました。

setDefaultHomepage("following");

Railsコンソールで SiteSetting.homepage という変数があることを確認し、その値は「latest」でした。
これで動作しました :smiley:

問題点はありますでしょうか?

バックエンドから「latest」を読み込み、イニシャライザがクライアント側でロードされることに懸念があります。

よろしくお願いいたします、
フェリペ

いいえ、Ruby ファイルを直接変更することはできません。それは単なるヒントでした。そもそも、私があのケースで行っていたように、コアに PR を提出するわけではありません。おそらく、plugin.rb 内のプラグイン初期化処理からその変更を加える方法を見つける必要があるでしょう。これはコアではなく、プラグインの変更となります。

やっほー!

plugin.rb で、あなたが言った通り、「following」だけをオプションとして設定することで可能になりました:

UserOption.class_eval do
	def homepage 
		"following"
	end 
end

ハハ、それも一つの手ですが、実際にはそれをオプションとして追加し、ユーザーがいつでも変更できるようにすべきです。少なくとも、この機能をプラグインにマージさせたいのであればね :wink:

でもまあ、良い取り組みです。さらに発展させていきましょう。

余談ですが、こちらも見てください: