روابط فتات الخبز

شكرا لمشاركتك هذا! إنه يعمل بدون رسالة التحذير.

أواجه مشكلة أخرى ذكرتها هنا:

بخصوص هذه المشكلة، سألت ChatGPT وقال (بما أنني لست مطورًا):

إظهار رسالة ChatGPT

من المحتمل أن تنبع المشكلة من كيفية استخراج topicId من عنوان URL:

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

إذا كان عنوان URL الخاص بك يحتوي على أنماط أكثر تعقيدًا (مثل العناوين التي تحتوي على مسافات أو أحرف خاصة أو شرائح غير قياسية)، فإن هذا التقسيم البسيط لن يحصل بشكل موثوق على معرف الموضوع الصحيح.


لماذا يسبب هذا مشاكل:

  • عناوين URL مثل /t/3ple-2015-2019-title/12345 تحتوي على معرف الموضوع الرقمي في النهاية، ولكن الكود الخاص بك يفترض أن معرف الموضوع هو دائمًا الجزء الثالث.
  • إذا كان هيكل عنوان URL الخاص بك يختلف، فأنت أحيانًا تلتقط شريحة أو جزءًا من العنوان بدلاً من المعرف.
  • هذا يعطل طلب AJAX الخاص بك (/t/${topicId}.json) لأنك قد ترسل معرف موضوع غير صالح أو شريحة، مما يؤدي إلى إرجاع معلومات فئة غير صحيحة أو افتراضية (مثل “عام”).

كيفية الإصلاح:

استخدم طريقة أكثر موثوقية لاستخراج معرف الموضوع من عنوان URL:

  1. استخراج معرف الموضوع من آخر جزء رقمي في عنوان URL.

غالبًا ما تبدو عناوين URL لموضوعات Discourse مثل /t/{slug}/{id}، على سبيل المثال:

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

هنا، 12345 هو معرف الموضوع.


استبدل هذا:

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

بهذا:

const segments = url.split('/').filter(Boolean);
const topicId = segments[segments.length - 1]; // آخر جزء، من المتوقع أن يكون معرفًا رقميًا

لزيادة الأمان، تحقق من أن topicId هو رقم:

if (!/^\\d+$/.test(topicId)) {
  console.error("معرف موضوع غير صالح تم استخراجه من عنوان 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("معرف موضوع غير صالح تم استخراجه من عنوان URL:", topicId);
    return;
  }

  // ثم استمر في استدعاءات AJAX الخاصة بك باستخدام topicId
}

بهذه الطريقة تحصل دائمًا على معرف الموضوع الرقمي بغض النظر عن العناوين المعقدة أو التي تحتوي على مسافات في عنوان URL، مما يصلح البحث عن فئة ومسار شريط التنقل.

هل يمكنك إصلاح ذلك؟
شكرا جزيلا مقدما :raising_hands: