Liens de fil d'Ariane

Merci de partager cela ! Cela fonctionne sans le message d’avertissement.

J’ai un autre problème que j’ai mentionné ici :

Pour ce problème, j’ai demandé à ChatGPT et il a dit (puisque je ne suis pas développeur) :

Afficher le message de ChatGPT

Le problème vient probablement de la façon dont vous extrayez le topicId de l’URL :

const topicId = url.split('/')[2];

Si votre URL contient des motifs plus complexes (comme des titres avec des espaces, des caractères spéciaux ou des slugs non standard), cette simple division n’obtiendra pas de manière fiable le bon ID de sujet.


Pourquoi cela pose problème :

  • Les URL comme /t/3ple-2015-2019-title/12345 ont l’ID numérique du sujet à la fin, mais votre code suppose que l’ID du sujet est toujours le 3ème segment.
  • Si la structure de votre URL varie, vous récupérez parfois un slug ou une partie du titre au lieu de l’ID.
  • Cela casse votre requête AJAX (/t/${topicId}.json) car vous pourriez envoyer un ID de sujet ou un slug invalide, renvoyant des informations de catégorie incorrectes ou par défaut (comme “General”).

Comment corriger :

Utilisez une méthode plus fiable pour extraire l’ID du sujet de l’URL :

  1. Extrayez l’ID du sujet du dernier segment numérique de l’URL.

Les URL de sujets Discourse ressemblent souvent à /t/{slug}/{id}, par exemple :

/t/3ple-2015-2019-title/12345

Ici, 12345 est l’ID du sujet.


Remplacez ceci :

const topicId = url.split('/')[2];

Par ceci :

const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // dernier segment, attendu comme ID numérique

Pour être plus sûr, validez que topicId est un nombre :

if (!/^\\d+$/.test(topicId)) {
  console.error("ID de sujet invalide extrait de l'URL :", topicId);
  return; // arrêter l'exécution
}

Résumé : mettez à jour votre extrait de code dans updateBreadcrumbs comme ceci :

if (url.includes('/t/')) {
  const segments = url.split('/').filter(Boolean);
  const topicId = segments[segments.length - 1];

  if (!/^\\d+$/.test(topicId)) {
    console.error("ID de sujet invalide extrait de l'URL :", topicId);
    return;
  }

  // Ensuite, continuez vos appels AJAX avec topicId
}

De cette façon, vous obtenez toujours l’ID numérique du sujet, quelles que soient les titres complexes ou avec des espaces dans l’URL, ce qui corrige la recherche de la catégorie et du chemin du fil d’Ariane.

Pourriez-vous corriger cela ?
Merci d’avance :raising_hands: