Olá.
Vou mostrar com imagens.
Eu estava recebendo este erro antes da última atualização.
Depois de instalar a atualização, continuo recebendo este erro.
(Atual - Current)
E eu removi todo o código do site e tentei novamente, ainda recebo o erro.
Traduzir
Erro
Algo deu errado.
Isso também acontece no modo de segurança? Você também poderia verificar o console do navegador em busca de erros ao clicar nele, além de verificar em /logs para ver se há mais detalhes.
1 curtida
Modo de Segurança está ativo e não há nenhum erro visível na página de logs. Talvez eu não esteja entendendo.
Últimos logs.
Tentei desativar o modo de segurança. Ainda estou recebendo o mesmo erro.
A propósito, quando clico pela segunda vez, o erro desaparece e a página inicial aparece.
Consigo ver alguns erros quando os componentes do tema são carregados e os plugins são descarregados.
Você pode dar uma olhada nas suas personalizações recentes.
1 curtida
Arkshine:
Vejo alguns erros quando os plugins são carregados (o TC sozinho parece estar bem), mas não consigo descobrir a origem.
Quais plugins você instalou?
Obrigado pelo seu interesse.
Último plugin: GIF
Todos os plugins
Você tem alguma personalização em JS fora dos componentes remotos?
Eu tentaria desabilitar todos os componentes e habilitá-los um por um até que o erro aconteça.
<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>
Esses códigos causam este erro.
Não sei como consertar.
Preciso desses códigos
Você está movendo elementos que contêm componentes Emberjs (aqui está a lista de tags), o que acho que provavelmente interrompe o ciclo de vida do componente.
Sua melhor aposta aqui é usar a API.
No seu caso, ou:
Usando plugin outlets como mostrei no seu último tópico . No entanto, como ele não existe para os tópicos mais recentes na página da categoria, você precisará solicitá-lo.
Sobrescrevendo o template . Esta não é uma boa solução por motivos de compatibilidade, mas pode ser uma alternativa imediata.
1 curtida
Encontrei estes códigos.
Não era o que eu queria, mas serve por agora.
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 = '/';
Se alguém puder ajudar, estou aguardando. Obrigado
Eu recomendo fortemente que você não siga esse caminho. É como aplicar um band-aid a um efeito colateral em vez de corrigir a causa raiz do problema. Você criará mais problemas com isso (como seu último tópico por causa do código acima)
Você pode tornar seu JS um pouco mais amigável ao Discourse (a melhor maneira ainda é usar um plugin outlet quando puder ).
Aqui está um exemplo. Ele usa a API na mudança de página, executa código em uma rota específica e copia o HTML antes do link (para que você possa clicar na tag):
JS
<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>
CSS
.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;
}
}
2 curtidas
Olá @Arkshine
Alterar o link do logotipo não ajudou, eu deletei esses códigos.
Mas não há outra maneira. Preciso posicionar as tags assim.
https://pvpfarm.com
Se eu pagar alguém, eles podem escrever códigos decentes que funcionem?
E onde você encontra esses códigos? (JS) De GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. ?
Você pode criar um tópico em Marketplace se precisar/quiser alguma ajuda paga.
1 curtida
Eu dei o código para isso em #11 .
Olá novamente @Arkshine
Adicionei os códigos que você deu após excluir estes códigos, mas eles não estão funcionando. Estou cometendo algum erro?
Está funcionando para mim:
Certifique-se de manter \u003cscript type=\"text/discourse-plugin\" version=\"0.8\"\u003e. , caso contrário, não funcionará.
Sim, está funcionando!
Há apenas um pequeno erro.
Quando clico no logotipo, o número de tags aumenta.
Atualizei meu código acima.
2 curtidas
Não sei como agradecer. Muito obrigado!
@Arkshine Desculpe por ressuscitar o tópico novamente.
Obrigado novamente. Encontrei um erro nos códigos que você deu.
Você pode me ajudar, por favor?
Tentei corrigir os códigos, mas não consegui.
Na seção Mais Recentes, apenas a tag aparece no tópico com tag mais recentemente aberto.
E quando você entra em uma categoria, as tags não aparecem.
@ogulcan1787 Atualizei o código acima.
1 curtida