Ссылки-хлебные крошки

Спасибо, что поделились! Уведомление об ошибке больше не появляется.

У меня возникла ещё одна проблема, о которой я упоминал здесь:

По этому вопросу я обратился к ChatGPT, и он ответил (учитывая, что я не разработчик):

Показать сообщение от ChatGPT

Проблема, скорее всего, связана с тем, как вы извлекаете topicId из URL:

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

Если ваш URL содержит более сложные паттерны (например, заголовки с пробелами, специальными символами или нестандартные слаг), такое простое разделение не позволит надёжно получить правильный ID темы.


Почему это вызывает проблемы:

  • В URL вроде /t/3ple-2015-2019-title/12345 числовой ID темы находится в конце, но ваш код предполагает, что ID всегда является третьим сегментом.
  • Если структура URL варьируется, вы иногда получаете слаг или часть заголовка вместо ID.
  • Это ломает ваш AJAX-запрос (/t/${topicId}.json), так как вы можете отправлять некорректный ID темы или слаг, из-за чего возвращается неверная или стандартная информация о категории (например, «General»).

Как исправить:

Используйте более надёжный способ извлечения ID темы из URL:

  1. Извлеките ID темы из последнего числового сегмента URL.

URL тем в Discourse часто выглядят так: /t/{slug}/{id}, например:

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

Здесь 12345 — это ID темы.


Замените это:

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

На это:

const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // последний сегмент, ожидаемый как числовой ID

Для большей надёжности проверьте, что topicId является числом:

if (!/^\d+$/.test(topicId)) {
  console.error("Неверный ID темы, извлечённый из URL:", topicId);
  return; // прекратить выполнение
}

Итог: обновите фрагмент кода в updateBreadcrumbs следующим образом:

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

  if (!/^\d+$/.test(topicId)) {
    console.error("Неверный ID темы, извлечённый из URL:", topicId);
    return;
  }

  // Затем продолжите ваши AJAX-вызовы с использованием topicId
}

Таким образом, вы всегда будете получать числовой ID темы, независимо от сложных заголовков или пробелов в URL, что исправит поиск категории и пути в хлебных крошках.

Не могли бы вы это исправить?
Заранее спасибо :raising_hands: