Совет по скрытию администратора из компонента темы «О странице»: замедлит ли это работу?

Я хочу убрать свою учётную запись со страницы «О нас» на некоторых сайтах, которыми я управляю. Я не тот, кто будет удалять вашу учётную запись или что-то ещё. . .

Один из способов — вот этот:

Но в наши дни использование плагина кажется излишне громоздким, поэтому у меня есть компонент темы, который делает это:

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;
}

Это не было бы полезно ни для кого, кроме меня, поэтому мне отчасти нравится идея с компонентом темы.

Так что для каждого переключения страницы, кроме «О нас», вы обрабатываете примерно две дополнительные строки JavaScript?

Нет, я не думаю, что это плохо, учитывая огромный объем JavaScript, который постоянно выполняется на Discourse :slight_smile:

В основном я так и думал, но я очень ценю ваше подтверждение. Я займусь тем, чтобы немного улучшить этот проект, сделать его публичным, а затем напишу инструменты для автоматизации его добавления на некоторые сайты.

Большое спасибо.

Так, Джей, это будет плагин для установки или компонент темы?

Думаю, это может быть удобно даже для расширения функциональности модов. Для некоторых случаев использования.

Это компонент темы. Я всё ещё немного его дорабатываю. В ближайшее время я создам для него полноценную страницу темы, но вы можете заглянуть на GitHub - literatecomputing/discourse-hide-admins-about: Theme component to hide some admin users from about page · GitHub, если хотите попробовать его прямо сейчас.

Это довольно круто. Но я готов подождать вашего официального запуска.