Community Linksを作成するAPIにパラメータを渡すことは可能ですか?

例:

       api.addCommunitySectionLink({
         name: "intersection-navigator",
         route:"tags.intersection",
         title: I18n.t("tag_intersection_navigator.link.title"),
         text: I18n.t("tag_intersection_navigator.link.text")
       })

… は、そのルートが tag_id を必要とするため失敗します。

次を追加しようとしました:

        params: { tag_id:  siteSettings.discourse_tag_intersection_navigator_all_word },
        model: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },

… しかし、これは api によって必要に応じて処理されない可能性が非常に高いです…

「いいね!」 4

進捗がありました!

これには以下が含まれます。

「いいね!」 3

具体的には、ここだと思います: discourse/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js at d0c3f3b8fe6905e7e33ae4944cdf44c11ccc0df6 · discourse/discourse · GitHub

これを追加すれば機能するはずです:

get models() {
 return args.models;
}
「いいね!」 3

ああ、開店ありがとうございます!

「いいね!」 1

それと、typeof args === "function"という条件があるので、すぐに次のようなことができます。

api.addCommunitySectionLink((Base) =
  class CustomLink extends Base {
    get name() {
      return "intersection-navigator";
    }

    get route() {
      return "tag.show";
    }

    get models() {
      return ["tagid"];
    }

    get title() {
      return I18n.t("tag_intersection_navigator.link.title");
    }

    get text() {
      return I18n.t("tag_intersection_navigator.link.text");
    }

  }
);
「いいね!」 1

はい、それは私がすでにやっていることですが…プロセスの後半で面白いことがいくつかあります。

「いいね!」 1

なぜか、どうもうまくいきません。クリックするとpostStreamがないというエラーが発生します:

api.addCommunitySectionLink((baseSectionLink) =
 {
        return class CustomSectionLink extends baseSectionLink {
          get name() {
            return "intersection-navigator";
          }

          get route() {
            return "tags.intersection";
          }

          get models() {
            return [{tag_id: siteSettings.discourse_tag_intersection_navigator_all_word}];
          }

          get title() {
            return I18n.t("tag_intersection_navigator.link.title")
          }

          get text() {
            return I18n.t("tag_intersection_navigator.link.text");
          }
        };
      });

まるで、現在のルートのモデルを含める必要があるかのようです。変ですね!

「いいね!」 1

その設定の出力は何ですか?手動で実行すると問題なく動作するように見えます:

get models() {
  return ["featured", "tv"];
}
「いいね!」 2

はい、それで大丈夫です。とても助かります。ありがとうございます!

設定はただの文字列です。考えすぎていたようです。

クエリパラメータの名前が「models」なのは、100%直感的とは言えませんね?

あなたのPRでこれがずっとすっきりしますね。ありがとうございます!

「いいね!」 2

ええ、私も最初ははっきりしませんでしたが、最終的にEmberのLinkToコンポーネントを使用しており、それがモデル引数を期待しているためです…

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.