안녕하세요.
이미지로 보여드리겠습니다.
마지막 업데이트 전에 이 오류가 발생했습니다.
업데이트를 설치한 후에도 계속 이 오류가 나고 있습니다.
(Güncel - Current)
![]()
사이트에서 모든 코드를 제거하고 다시 시도해 보았지만, 여전히 오류가 발생합니다.
번역
오류
문제가 발생했습니다.
안전 모드에서도 이런 문제가 발생하나요? 클릭할 때 브라우저 콘솔에 오류가 있는지 확인해 주시고, /logs를 살펴봐서 더 자세한 정보가 있는지 확인해 주세요.
안전 모드(Safe Mode)가 활성화되어 있고, 로그 페이지에서 오류가 보이지 않습니다. 제가 뭔가 잘못 이해하고 있는 건지 모르겠습니다.
마지막 로그입니다.
![]()
안전 모드를 끄려고 시도해 보았습니다. 여전히 같은 오류가 발생합니다.
참고로, 해당 오류를 두 번째로 클릭하면 오류가 사라지고 홈 페이지가 나타납니다.
리모트 컴포넌트 외에 다른 JS 커스터마이징이 있나요?
모든 컴포넌트를 비활성화한 후, 오류가 발생하기까지 하나씩 활성화해 보시는 것을 추천합니다.
<script>
function moveTagsToTitle() {
const mainLinks = document.querySelectorAll('.main-link');
mainLinks.forEach(mainLink => {
const discourseTags = mainLink.querySelector('.discourse-tags');
const titleElement = mainLink.querySelector('.title');
if (discourseTags && titleElement) {
const tags = discourseTags.querySelectorAll('.discourse-tag');
tags.forEach(tag => {
const tagSpan = document.createElement('span');
tagSpan.className = 'discourse-tag box';
tagSpan.textContent = tag.textContent;
tagSpan.style.fontSize = 'var(--font-down-2)';
tagSpan.style.borderRadius = '10px';
tagSpan.style.border = '1px solid #444460';
tagSpan.style.backgroundColor = '#1f1f33';
tagSpan.style.margin = '2px';
tagSpan.style.display = 'inline-block';
tagSpan.style.overflow = 'hidden';
tagSpan.style.whiteSpace = 'nowrap';
tagSpan.style.textOverflow = 'ellipsis';
tagSpan.style.verticalAlign = 'middle';
tagSpan.style.marginRight = '5px';
tagSpan.style.marginLeft = '-6px';
titleElement.insertBefore(tagSpan, titleElement.firstChild);
});
if (discourseTags.parentNode) {
discourseTags.parentNode.removeChild(discourseTags);
}
}
});
const topicHeaderExtras = document.querySelectorAll('.topic-header-extra');
topicHeaderExtras.forEach(topicHeaderExtra => {
const discourseTags = topicHeaderExtra.querySelector('.discourse-tags');
const tags = discourseTags.querySelectorAll('.discourse-tag');
tags.forEach(tag => {
tag.className = 'discourse-tag box';
tag.style.borderRadius = '10px';
tag.style.border = '1px solid #444460';
tag.style.backgroundColor = '#1f1f33';
tag.style.margin = '1px';
tag.style.padding = '2px 8px';
tag.style.display = 'inline-block';
tag.style.overflow = 'hidden';
tag.style.whiteSpace = 'nowrap';
tag.style.textOverflow = 'ellipsis';
tag.style.verticalAlign = 'middle';
tag.style.marginRight = '5px';
tag.style.marginBottom = '5px';
});
});
}
window.addEventListener('load', moveTagsToTitle);
const observer = new MutationObserver(moveTagsToTitle);
const targetNode = document.body;
const observerOptions = {
childList: true,
subtree: true
};
observer.observe(targetNode, observerOptions);
</script>
이 코드들이 이 오류를 일으키고 있습니다.
어떻게 수정해야 하는지 모르겠습니다.
이 코드들이 꼭 필요합니다 ![]()
Emberjs 컴포넌트를 포함하는 요소를 이동하고 있습니다(태그 목록 참조). 이는 컴포넌트 생명주(lifecycle)를 방해할 가능성이 높다고 생각합니다.
가장 좋은 방법은 API를 사용하는 것입니다.
귀하의 경우, 다음 중 하나를 사용할 수 있습니다:
이 코드들을 찾았어요.
원하던 결과는 아니지만, 당분간은 이걸로 충분할 것 같아요.
var pElement = document.getElementById('site-logo').parentNode;
//var pElement = document.createElement('a');
//pElement.innerHTML = aElement.innerHTML;
//aElement.replaceWith(pElement);
pElement.href = '#';
pElement.style.cursor = 'pointer';
pElement.onclick = function() {
window.location.href = '/';
};
//document.getElementById('site-logo').parentNode.href = '/';
도와주실 수 있는 분이 있다면 기다리고 있어요. 감사합니다 ![]()
그 경로를 선택하지 않는 것을 강력히 권장합니다. 이는 문제의 근본 원인을 수정하는 대신 부작용에 반창고를 붙이는 것과 같습니다. 이렇게 하면 더 많은 문제를 초래하게 됩니다(위 코드 때문에 최근 발생한 topic과 같은 문제).
JS 코드를 조금 더 Discourse에 맞게 조정할 수 있습니다(가능하다면 플러그인 아웃렛을 사용하는 것이 여전히 최선의 방법입니다).
아래는 예시입니다. 페이지 변경 시 API를 사용하고, 특정 경로에서 코드를 실행하며, 링크 앞의 HTML을 복사합니다(이렇게 하면 태그를 클릭할 수 있음):
<script type="text/discourse-plugin" version="0.8">
const { next } = require("@ember/runloop");
function moveTags() {
const mainLinks = document.querySelectorAll(".main-link:not(.tags-moved)");
mainLinks.forEach((mainLink) => {
const discourseTags = mainLink.querySelector(".discourse-tags");
const titleElement = mainLink.querySelector("a[data-topic-id]");
if (discourseTags && titleElement) {
titleElement.insertAdjacentHTML("beforebegin", discourseTags.outerHTML);
mainLink.classList.add('tags-moved');
}
});
}
api.registerModelTransformer("topic", async (topics) => {
next(() => {
moveTags();
})
});
api.onPageChange((url) => {
if (url.startsWith("/categories")) {
moveTags();
}
});
</script>
.top-row,
.link-top-line {
.discourse-tag {
font-size: var(--font-down-2) !important;
padding: 2px 8px;
margin: 2px 5px 2px -6px;
border-radius: 10px;
border: 1px solid #444460;
background-color: #1f1f33;
}
.discourse-tag::after {
content: '' !important;
margin-left: 0 !important;
}
}
.bottom-row,
.link-bottom-line {
.discourse-tags {
display: none;
}
}
Hi @Arkshine
로고 링크를 변경했지만 효과가 없었습니다. 해당 코드들을 삭제했습니다.
하지만 다른 방법이 없습니다. 태그를 이렇게 배치해야 합니다.
https://pvpfarm.com
누군가에게 비용을 지불하면 제대로 동작하는 적절한 코드를 작성해 줄 수 있을까요?
그리고 이 코드들(JS)은 어디서 찾나요? GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub 에서인가요?
유료 도움이 필요하시거나 원하시는 경우 Marketplace 채널에서 주제를 만들 수 있습니다. ![]()
#11에서 해당 코드를 제공했습니다.
다시 한번 @Arkshine 님,
해당 코드를 삭제한 후 주신 코드를 추가했는데 작동하지 않습니다. 제가 실수를 한 건가요?
위에서 제 코드를 업데이트했습니다.
감사를 어떻게 표현해야 할지 모르겠어요. 정말로 감사드립니다!
![]()
@Arkshine 다시这个话题을 되살려 죄송합니다.
다시 한번 감사합니다. 주신 코드에서 오류를 찾았습니다.
도와주실 수 있을까요?
코드를 수정해 보았지만 해결하지 못했습니다.
Latest 섹션에서는 최근에 열린 태그가 있는 주제에 태그만 표시됩니다.
카테고리에 진입하면 태그가 표시되지 않습니다.
@ogulcan1787 위 코드를 업데이트했습니다.