Alteras
(Steven Chang)
7월 16, 2024, 6:39오후
2
완전히 랜덤은 아니고, 태그 생성 시점에 처리되는 것도 아니지만, Tag Icons 컴포넌트와 유사한 방식으로 replaceTagRenderer()를 플러그인 API에서 가져와 태그의 HTML을 렌더링 시점에 수정할 수 있습니다(https://github.com/isabella232/discourse-tag-icons/blob/master/common/header.html 참고).
이와 같은 함수는 태그 이름을 받아 1~6 사이의 숫자로 매핑(예: 문자열을 6진법으로 인코딩한 뒤 마지막 자리 숫자를 가져오거나 모듈로 연산을 수행)하고, 이를 HTML 문자열에 추가합니다. 태그 이름에 따라 스타일이 결정되므로 랜덤은 아니지만, 모든 사용자에게 동일한 스타일을 유지할 수 있습니다.
원본의 기본 태그 렌더링 함수는 다음 링크에서 확인할 수 있습니다:
export function defaultRenderTag(tag, params) {
// This file is in lib but it's used as a helper
let siteSettings = helperContext().siteSettings;
params = params || {};
const visibleName = escapeExpression(tag);
tag = visibleName.toLowerCase();
const classes = ["discourse-tag"];
const tagName = params.tagName || "a";
let path;
if (tagName === "a" && !params.noHref) {
if ((params.isPrivateMessage || params.pmOnly) && User.current()) {
const username = params.tagsForUser
? params.tagsForUser
: User.current().username;
path = `/u/${username}/messages/tags/${tag}`;
} else {
path = `/tag/${tag}`;
}
}
This file has been truncated. show original