제가 관리하는 사이트들의 소개 페이지에서 제 사용자 프로필을 제거하고 싶습니다. 저는 여러분의 계정을 삭제하거나 다른 조치를 취하는 사람이 아닙니다.
한 가지 방법은 다음과 같습니다:
하지만 요즘은 플러그인이 좀 무겁게 느껴져서, 이 문제를 해결하는 테마 컴포넌트를 만들었습니다:
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가 매우 큰 성능 비용을 발생시키나요? 플러그인은 소개 페이지 직렬화기(serializer)에만 영향을 주지만, 이 방식은 모든 페이지 변경 시마다 검사를 수행합니다. 이것이 나쁜가요?
최근에 이 문제에 대해 사용자를 CSS에 하드코딩한 토픽이 있었습니다. 다음과 같이 소개 페이지에만 적용되는 단일 CSS를 테마에 넣는 것이 더 나을까요?
.about-page div[data-username="pfaffman"] {
display: none !important;
}
이것은 저를 제외하고는 누구에게도 유용하지 않을 것이기 때문에, 저는 이 테마 컴포넌트 아이디어를 어느 정도 선호합니다.