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

شكراً جزيلاً لك @manuel – لقد قمت بتحديث هذه المكونة باستخدام الكود الخاص بك (وإضافة بعض مقتطفات الكود الأخرى) لتمكين بعض الوظائف الإضافية:

  1. الفئات الفرعية مدعومة الآن في مسار التنقل (Breadcrumb)
  2. مسار التنقل الكامل (Breadcrumb) يظهر الآن على جميع صفحات قوائم الفئات والفئات الفرعية بالإضافة إلى صفحات الموضوعات
  3. يوجد الآن إعداد لتمكين أو تعطيل ذلك على الهاتف المحمول
إعجابَين (2)

أهلاً! هذه المكونات رائعة!

هناك تفصيلة واحدة ربما تعرف كيفية إصلاحها.

زر الرجوع يختفي عند التمرير لأسفل (يرجى مشاهدة الفيديو المرفق)… هل من الممكن تثبيت زر الرجوع/جعله عائماً في أعلى الشاشة بحيث يظل مرئياً حتى عند التمرير؟

السياق: المجتمع مضمن (webview) في تطبيقنا للجوال.

إعجابَين (2)

شكراً @cristo على هذا الاقتراح الرائع الذي تم تضمينه الآن كإعداد:

3 إعجابات

شكراً @denvergeeks! الزر أصبح الآن ثابتًا.

ولكن، كما ترى في الفيديو المرفق، فإن الزر لا يعيدني إلى نفس النقطة في التمرير على الشاشة الرئيسية.

إعجاب واحد (1)

نعم لأنه زر الصفحة الرئيسية، وليس زر الرجوع!

إعجاب واحد (1)

عفوًا! اعتقدت أنها كانت زر رجوع بسبب السهم.

@denvergeeks شكرًا لك على التوضيح! هل تعرف مكونًا يوفر زر رجوع؟

إعجاب واحد (1)

لا، لست على علم بأي مكون تقني (TC) موجود حاليًا يحتوي على زر “رجوع” مناسب (أو يتضمنه). قد يكون هناك شيء موجود يتضمن واحدًا.

لكنني أدرك فائدة وجود زر “رجوع” ضمن تنقلات الموقع، لذا سأعمل على مكون تقني منفصل يوفر ذلك.

ربما يمكنك البحث لمعرفة ما إذا كان هناك أي سمة أو مكون سمة موجود حاليًا يتضمن واحدًا. قد يؤدي العثور على ذلك إلى تسريع عمليتي.

إعجابَين (2)

رائع! سأبحث وأبلغك بنتائجي.

شكرا لك!

إعجابَين (2)

@denvergeeks لقد وجدت موضوعًا قد يكون مفيدًا:

لم أجد بعد أي سمة أو مكون موجود يتضمن زر رجوع.

إعجابَين (2)

للأسف، أواجه نفس المشكلة هذه على جهاز iPhone 16 Pro Max.

إعجابَين (2)

نعم، أستطيع تأكيد أن ذلك ظهر بعد التحديث. أواجه هذه المشكلة على هاتف Android الخاص بي.

إعجابَين (2)

شكرا @Aaron_Walsh و @cristo للإبلاغ! يرجى التحديث الآن وإعلامي بنتائجك!

4 إعجابات

أستطيع تأكيد المشكلة من جانب أندرويد. لقد تم إصلاحها وإزالتها الآن.

إعجابَين (2)

تم الإصلاح على جهاز iPhone الخاص بي!

إعجابَين (2)

@denvergeeks رائع! زر الرجوع يعمل على نظام أندرويد.

شكراً جزيلاً!

إعجابَين (2)

لاحظت أنه لا توجد طريقة لتحديد مكان وضع مسارات التنقل، وهو أمر رائع. على سبيل المثال، أنا أستخدم لافتات الفئات وأرغب في أن تكون مسارات التنقل فوقها.

إنها تضيع قليلاً عندما تكون بالأسفل.
هل هناك فرصة لتغيير هذا؟
شكراً


لقد لاحظت للتو شيئًا يمكن إصلاحه (أو على الأقل وجود خيار لتمكين/تعطيل ذلك). لا أعتقد أن الشرطة المائلة الأخيرة (/) ضرورية.

image

لذلك سيكون فقط “الصفحة الرئيسية / مناقشة عامة” بدلاً من “الصفحة الرئيسية / مناقشة عامة /”

تعديل:
لقد استخدمت CSS للقيام بذلك، لكنني أعتقد أنه يمكن أن يكون هو الافتراضي. في حال أراد شخص ما ذلك:

/* إزالة الفاصل (محتوى ::after) من آخر عنصر في مسارات التنقل */
.breadcrumbs li:last-child::after {
    content: none;
}

هذا تعديل بسيط، لكنه يبدو أفضل بالنسبة لي. قم بزيادة الهامش السفلي إلى 1rem لإعطائه مساحة أكبر “للتنفس”، ولكنه يجعله يتمركز أيضًا عندما تكون هناك لافتة (إذا كان علينا الالتزام بهذا الموضع على الصفحة). انظر إلى صورتي السابقة (الافتراضي 0.5rem) مقابل استخدام 1rem:

image


النتيجة النهائية بعد كل تعديلات CSS التي أجريتها:

image

CSS:

/* مسارات التنقل - إزالة الخلفية وزيادة الهامش السفلي */
.breadcrumbs {
    background-color: transparent !important;
    margin-bottom: 1rem;
}

/* مسارات التنقل - إخفاء السهم الخلفي من رابط الصفحة الرئيسية */
.breadcrumbs__title .d-icon {
    display: none;
}

/* مسارات التنقل - إزالة الفاصل (محتوى ::after) من آخر عنصر في مسارات التنقل */
.breadcrumbs li:last-child::after {
    content: none;
}

مرحبًا، لدي تحذير في منتديي بسبب التغييرات القادمة في نواة Discourse:

[إشعار المسؤول] يحتاج أحد السمات أو الإضافات الخاصة بك إلى تحديث لدعم التغييرات القادمة في نواة Discourse. (المعرف: discourse.script-tag-discourse-plugin) المشكلة المحددة: “روابط مسار التنقل”.

أنا أستخدم Discourse cloud، هل يمكنني حل هذه المشكلة أم يجب علي انتظار تحديث الإضافة؟

@manuel على GitHub لاحظت أنك أحد المساهمين في هذه المكونة، لذا آمل أن يكون من المقبول ذكرك هنا؟

أنا متأكد من أن المزيد من الأشخاص يرون نفس الرسالة:

[إشعار المسؤول] يحتوي السمة 'روابط فتات الخبز' على رمز يحتاج إلى تحديث. (المعرف: discourse.script-tag-discourse-plugin) (اعرف المزيد)

و “اعرف المزيد” يعيد التوجيه إلى:

هل هناك أي فرصة لتحديث المكونة؟
شكرا!

إعجاب واحد (1)

لقد قمت للتو بفتح طلب سحب لإصلاح هذه المشكلة. آمل أن يتمكن المساهمون من مراجعته ودمجه.

إعجابَين (2)

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

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

بخصوص هذه المشكلة، سألت 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: