Enlaces de migajas de pan

¡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/12345 tienen 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:

  1. 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 :raising_hands: