Link dei Breadcrumb

Grazie per aver condiviso questo! Funziona senza il messaggio di avviso.

Ho un altro problema che ho menzionato qui:

Per questo problema, ho chiesto a ChatGPT e mi ha detto (dato che non sono uno sviluppatore):

Mostra messaggio di ChatGPT

Il problema deriva probabilmente da come stai estraendo il topicId dall’URL:

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

Se il tuo URL contiene pattern più complessi (come titoli con spazi, caratteri speciali o slug non standard), questo semplice split non otterrà in modo affidabile l’ID corretto del topic.


Perché questo causa problemi:

  • URL come /t/3ple-2015-2019-title/12345 hanno l’ID numerico del topic alla fine, ma il tuo codice presuppone che l’ID del topic sia sempre il terzo segmento.
  • Se la struttura del tuo URL varia, a volte stai prendendo uno slug o parte del titolo invece dell’ID.
  • Questo interrompe la tua richiesta AJAX (/t/${topicId}.json) perché potresti inviare un ID di topic o uno slug non valido, restituendo informazioni sulla categoria errate o predefinite (come “General”).

Come risolvere:

Utilizza un modo più affidabile per estrarre l’ID del topic dall’URL:

  1. Estrai l’ID del topic dall’ultimo segmento numerico dell’URL.

Gli URL dei topic di Discourse spesso assomigliano a /t/{slug}/{id}, ad esempio:

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

Qui, 12345 è l’ID del topic.


Sostituisci questo:

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

Con questo:

const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // ultimo segmento, previsto come ID numerico

Per essere più sicuro, valida che topicId sia un numero:

if (!/^\\d+$/.test(topicId)) {
  console.error("ID del topic non valido estratto dall'URL:", topicId);
  return; // interrompe l'esecuzione
}

Riepilogo: aggiorna il tuo snippet di codice in updateBreadcrumbs in questo modo:

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

  if (!/^\\d+$/.test(topicId)) {
    console.error("ID del topic non valido estratto dall'URL:", topicId);
    return;
  }

  // Poi continua le tue chiamate AJAX con topicId
}

In questo modo otterrai sempre l’ID numerico del topic indipendentemente da titoli complessi o con spazi nell’URL, risolvendo la ricerca della categoria e del percorso del breadcrumb.

Saresti in grado di risolvere questo?
Grazie in anticipo :raising_hands: