Discourseドキュメントのタイトルによる並べ替えのみを許可するように変更

Discourse Docs は、他のフォーラムソフトウェアではなく Discourse を使用することにした主な理由です。しかし、私にとっては 1 つの大きな欠点があります。デフォルトでは、アクティビティで並べ替えられます。アクティビティでの並べ替え機能を完全に削除したいのですが、方法がわかりません。

このコードセクションを見つけ、アクティビティ並べ替えの elsif ステートメントを削除しましたが、効果はありませんでした。

      if @filters[:order] == "title"
        if @filters[:ascending].present?
          results = results.reorder('topics.title')
        else
          results = results.reorder('topics.title DESC')
        end
      elsif @filters[:order] == "activity"
        if @filters[:ascending].present?
          results = results.reorder('topics.last_posted_at')
        else
          results = results.reorder('topics.last_posted_at DESC')
        end
      end

このファイルでも同様のことを行いましたが、それでも同じ並べ替え機能が提供されます。

   context 'when ordering results' do
      context 'by title' do
        it 'should return the list ordered descending' do
          get "/docs.json?order=title"

          expect(response.status).to eq(200)

          json = response.parsed_body
          topics = json['topics']['topic_list']['topics']

          expect(topics[0]['id']).to eq(topic2.id)
          expect(topics[1]['id']).to eq(topic.id)
        end

        it 'should return the list ordered ascending with an additional parameter' do
          get "/docs.json?order=title&ascending=true"

          expect(response.status).to eq(200)

          json = response.parsed_body
          topics = json['topics']['topic_list']['topics']

          expect(topics[0]['id']).to eq(topic.id)
          expect(topics[1]['id']).to eq(topic2.id)
        end
      end

      context 'by date' do
        before do
          topic2.update(last_posted_at: Time.zone.now + 100)
        end

        it 'should return the list ordered descending' do
          get "/docs.json?order=activity"

          expect(response.status).to eq(200)

          json = response.parsed_body
          topics = json['topics']['topic_list']['topics']

          expect(topics[0]['id']).to eq(topic.id)
          expect(topics[1]['id']).to eq(topic2.id)
        end

        it 'should return the list ordered ascending with an additional parameter' do
          get "/docs.json?order=activity&ascending=true"

          expect(response.status).to eq(200)

          json = response.parsed_body
          topics = json['topics']['topic_list']['topics']

          expect(topics[0]['id']).to eq(topic2.id)
          expect(topics[1]['id']).to eq(topic.id)
        end
      end
    end

サーバー上のファイルに直接編集しただけでなく、Discourse Docs のフォークをインストールして編集しました。

何かヒントはありますか?本当に 3 分で終わる作業だと思っていましたが、何時間も費やしてしまいました…

ありがとうございます!

「いいね!」 1

気にする必要はありません。自分で解決しました。どういうわけか、VS Code に JavaScript ファイルを非表示にするフィルターが設定されていました。そのため、「Order」、「Sort」、「Activity」などを検索しても、JS ファイルの結果が得られませんでした(明らかにソートのようなインタラクティブな関数を処理しているのは JS ファイルです)。

リポジトリをフォークして変更を加えました。誰でも自由に使用できます。アクティビティによる並べ替え機能を削除し、トピックリストをデフォルトでタイトル昇順に並べ替え、カテゴリフィルターをアルファ昇順に並べ替えるようにデフォルト設定しました。

ユーザーのカスタマイズ設定を追加する方法がわからないため、この機能が公式プラグインに導入されるまで、これで十分です。

https://github.com/nickchomey/discourse-docs

「いいね!」 4

公式バージョンにマージされると素晴らしいですね。PRはいかがですか? :slight_smile: そうすれば、Discourse Docs Card Filter の順序もそれに応じて調整されますよね?

「いいね!」 1

それをどうすればいいのか本当に分かりません。どうぞご自由に!アルファベット順とアクティビティ、またはカウントを選択できるような管理者設定が理想的です。

「いいね!」 1

ありがとうございます。これを正しく設定する方法を知っている方はいらっしゃいますか?プラグインの設定はまだ初心者です。

私の理解では、この追加機能(アルファベット順ソート)は、元のプラグインのフォークとして @Nick_Chomey によって追加されたようです。

これを最も良い方法で使用するにはどうすればよいでしょうか?

元のDocsプラグインのコードを単純に変更できますか?それとも、元のプラグインをアンインストールして、このフォークを再インストールする必要がありますか?

よろしくお願いします!

「いいね!」 1

はい、Discourse Docs をアンインストールし、他のプラグインと同様にこれをインストールしてください。ドキュメントの更新を定期的に監視/保守していませんが、誰かが促してくれれば喜んで行います。または、フォークして自分で変更を監視することもできます。

もちろん、最善の選択肢は、Discourse がこれを公式プラグイン内の設定/機能として含めることです。

「いいね!」 1

ドキュメントの変更(ローカルでの変更であっても)ありがとうございます!

これを Feature に移動し、docs タグを付けました。これにより、今後の追跡が容易になります。

「いいね!」 3

ありがとうございます。

ご覧のとおり、アルファベット順の並べ替え機能を追加し、アクティビティの並べ替えはコメントアウトしました。そのため、すべての人にとっての解決策ではありません。しかし、私の追加機能を簡単に統合し、利用可能な並べ替えの種類を選択/切り替えるための設定を追加できると確信しています。私はその方法を知りませんでした。

「いいね!」 3