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/12345haben 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:
- 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 ![]()