Obrigado por compartilhar! Está funcionando sem a mensagem de aviso.
Estou tendo outro problema que mencionei aqui:
Para esse problema, perguntei ao ChatGPT e ele disse (já que não sou desenvolvedor):
Mostrar mensagem do ChatGPT
O problema provavelmente decorre de como você está extraindo o topicId do URL:
const topicId = url.split('/')[2];
Se o seu URL contiver padrões mais complexos (como títulos com espaços, caracteres especiais ou slugs não padrão), essa simples divisão não obterá de forma confiável o ID do tópico correto.
Por que isso causa problemas:
- URLs como
/t/3ple-2015-2019-title/12345têm o ID numérico do tópico no final, mas seu código assume que o ID do tópico é sempre o 3º segmento. - Se a estrutura do seu URL variar, às vezes você estará pegando um slug ou parte do título em vez do ID.
- Isso quebra sua solicitação AJAX (
/t/${topicId}.json), pois você pode estar enviando um ID de tópico ou slug inválido, retornando informações de categoria incorretas ou padrão (como “Geral”).
Como corrigir:
Use uma maneira mais confiável de extrair o ID do tópico do URL:
- Extraia o ID do tópico do último segmento numérico do URL.
URLs de tópicos do Discourse geralmente se parecem com /t/{slug}/{id}, por exemplo:
/t/3ple-2015-2019-title/12345
Aqui, 12345 é o ID do tópico.
Substitua isto:
const topicId = url.split('/')[2];
Por isto:
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // último segmento, esperado ser o id numérico
Para ter mais segurança, valide se topicId é um número:
if (!/^\\d+$/.test(topicId)) {
console.error("ID de tópico inválido extraído do URL:", topicId);
return; // interrompe a execução
}
Resumo: atualize seu trecho de código em updateBreadcrumbs assim:
if (url.includes('/t/')) {
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1];
if (!/^\\d+$/.test(topicId)) {
console.error("ID de tópico inválido extraído do URL:", topicId);
return;
}
// Em seguida, continue suas chamadas AJAX com topicId
}
Dessa forma, você sempre obterá o ID numérico do tópico, independentemente de títulos complexos ou com espaços no URL, corrigindo a busca pela categoria e pelo caminho do breadcrumb.
Você seria capaz de corrigir isso?
Agradeço desde já ![]()