「about page」テーマコンポーネントから管理者を非表示にするアドバイス--これで遅くなりますか?

管理しているいくつかのサイトの「アバウト」ページからユーザーを削除したいと考えています。アカウントを削除したり、その他諸々を行うのは私ではありません。 . .

その方法の一つはこれです。

しかし、プラグインは最近では少し大げさなように思えるので、これを行うテーマコンポーネントがあります。

import { withPluginApi } from "discourse/lib/plugin-api";

const hidden_admins = settings.hidden_admins.split("|");
const PLUGIN_ID = "hide-admins";

export default {
  name: "theme-javascript-initializer",
  initialize() {
    withPluginApi("0.8.30", (api) => {
      api.onPageChange((url) => {
        if (url != "/about") {
          return;
        }
        for (const admin of hidden_admins) {
          var element = document.querySelector(`[data-username=${admin}]`);
          if (element === null) {
            break;
          }
          element.classList.add("hide-me");
        }
      });
    });
  },
};

これは何らかの理由で愚かなことでしょうか? onPageChange は非常にコストがかかりますか? プラグインはアバウトシリアライザーのみに影響しますが、これはすべてのページ変更でチェックを行います。それは悪いことですか?

最近、この問題に関するトピックがあり、ユーザーを CSS にハードコーディングしていました。テーマに単一の CSS を追加するだけで、次のようになります。

.about-page div[data-username="pfaffman"] {
  display: none !important;
}

これはより良いでしょうか? 私以外の誰にとっても役立つものではないので、このテーマコンポーネントのアイデアが気に入っています。

「いいね!」 2

「about」以外のページ遷移ごとに、約2行の追加JavaScriptを処理しているということですか?

いいえ、Discourseでは常に膨大な量のJavaScriptが実行されていることを考えると、それは悪いことだとは思いません。

「いいね!」 2

それが私の考えとほぼ同じでしたが、確認していただけて大変感謝しています。これを少し見栄え良くして公開し、いくつかのサイトに追加するのを自動化するツールを作成します。

どうもありがとうございました。

「いいね!」 2

ジェイ、これはインストールするプラグインですか、それともテーマコンポーネントですか?

これは、一部のユースケースにおいて、モッドの機能拡張にさえ役立つ可能性があると思います。

これはテーマコンポーネントです。まだ少し整理中です。次回、適切なテーマページを作成しますが、試してみたい方は GitHub - literatecomputing/discourse-hide-admins-about: Theme component to hide some admin users from about page をご覧ください。

「いいね!」 2

それは素晴らしいですね。しかし、公式の展開を待つことにします。

「いいね!」 1

このトピックは、最後の返信から30日後に自動的にクローズされました。新しい返信は許可されていません。