Brotkrümel-Links

Vielen Dank für das Teilen! Es funktioniert ohne die Warnmeldung.

Ich habe ein weiteres Problem, das ich hier erwähnt habe:

Für dieses Problem habe ich ChatGPT gefragt und es sagte (da ich kein Entwickler bin):

ChatGPT-Nachricht anzeigen

Das Problem liegt wahrscheinlich darin, wie Sie die topicId aus der URL extrahieren:

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

Wenn Ihre URL komplexere Muster enthält (wie Titel mit Leerzeichen, Sonderzeichen oder nicht standardmäßige Slugs), wird dieser einfache Split nicht zuverlässig die richtige Topic-ID ermitteln.


Warum dies zu Problemen führt:

  • URLs wie /t/3ple-2015-2019-title/12345 haben die numerische Topic-ID am Ende, aber Ihr Code geht davon aus, dass die Topic-ID immer das 3. Segment ist.
  • Wenn Ihre URL-Struktur variiert, erfassen Sie manchmal einen Slug oder einen Teil des Titels anstelle der ID.
  • Dies unterbricht Ihre AJAX-Anfrage (/t/${topicId}.json), da Sie möglicherweise eine ungültige Topic-ID oder einen ungültigen Slug senden, was falsche oder Standard-Kategorieinformationen (wie “General”) zurückgibt.

So beheben Sie es:

Verwenden Sie eine zuverlässigere Methode, um die Topic-ID aus der URL zu extrahieren:

  1. Extrahieren Sie die Topic-ID aus dem letzten numerischen Segment der URL.

Discourse-Topic-URLs sehen oft so aus: /t/{slug}/{id}, z. B.:

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

Hier ist 12345 die Topic-ID.


Ersetzen Sie dies:

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

Durch dies:

const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // letztes Segment, das voraussichtlich die numerische ID ist

Um sicherer zu sein, validieren Sie, dass topicId eine Zahl ist:

if (!/^\\d+$/.test(topicId)) {
  console.error("Ungültige Topic-ID aus URL extrahiert:", topicId);
  return; // Ausführung stoppen
}

Zusammenfassung: Aktualisieren Sie Ihren Code-Snippet in updateBreadcrumbs wie folgt:

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

  if (!/^\\d+$/.test(topicId)) {
    console.error("Ungültige Topic-ID aus URL extrahiert:", topicId);
    return;
  }

  // Fahren Sie dann mit Ihren AJAX-Aufrufen mit topicId fort
}

Auf diese Weise erhalten Sie immer die numerische Topic-ID, unabhängig von komplexen oder mit Leerzeichen versehenen Titeln in der URL, und beheben so die Kategorie- und Pfadsuche für Breadcrumbs.

Könnten Sie das beheben?
Vielen Dank im Voraus :raising_hands: