¡Gracias por compartir esto! Está funcionando sin el mensaje de advertencia.
Tengo otro problema que mencioné aquí:
Para ese problema, le pregunté a ChatGPT y me dijo (ya que no soy desarrollador):
Mostrar mensaje de ChatGPT
El problema probablemente se deba a cómo extraes el topicId de la URL:
const topicId = url.split('/')[2];
Si tu URL contiene patrones más complejos (como títulos con espacios, caracteres especiales o slugs no estándar), esta simple división no obtendrá de manera confiable el ID de tema correcto.
Por qué esto causa problemas:
- URLs como
/t/3ple-2015-2019-title/12345tienen el ID de tema numérico al final, pero tu código asume que el ID de tema siempre es el tercer segmento. - Si la estructura de tu URL varía, a veces estás capturando un slug o parte del título en lugar del ID.
- Esto rompe tu solicitud AJAX (
/t/${topicId}.json) porque puedes estar enviando un ID de tema o slug inválido, devolviendo información de categoría incorrecta o predeterminada (como “General”).
Cómo solucionarlo:
Utiliza una forma más confiable de extraer el ID de tema de la URL:
- Extrae el ID de tema del último segmento numérico de la URL.
Las URLs de temas de Discourse a menudo se ven como /t/{slug}/{id}, por ejemplo:
/t/3ple-2015-2019-title/12345
Aquí, 12345 es el ID del tema.
Reemplaza esto:
const topicId = url.split('/')[2];
Con esto:
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // último segmento, se espera que sea el id numérico
Para estar más seguro, valida que topicId sea un número:
if (!/^\\d+$/.test(topicId)) {
console.error("ID de tema inválido extraído de la URL:", topicId);
return; // detiene la ejecución
}
Resumen: actualiza tu fragmento de código en updateBreadcrumbs de esta manera:
if (url.includes('/t/')) {
const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1];
if (!/^\\d+$/.test(topicId)) {
console.error("ID de tema inválido extraído de la URL:", topicId);
return;
}
// Luego continúa tus llamadas AJAX con topicId
}
De esta manera, siempre obtienes el ID de tema numérico independientemente de títulos complejos o con espacios en la URL, corrigiendo la búsqueda de la categoría y la ruta de las migas de pan.
¿Podrías arreglar eso?
Gracias de antemano ![]()