تحقق مما إذا كان عنوان URL يبدو كمنشور مجتمعي: https://{domain}/t/{title}/{topicID}(/{postIndex}).
تحقق مما إذا كانت الروابط الثابتة (العناوين مثل <h1> و # ) مضمنة في المنشور.
إنشاء كود HTML لجدول المحتويات.
نسخ الكود إلى الحافظة.
إنشاء جدول المحتويات
انشر منشورًا به هيكل (HTML <h1>، <h2>، … و Markdown # ، ## ، …). سيقوم Discourse بتعيين روابط ثابتة لكل عنوان.
تأكد من تحديد المنشور الخاص بك من خلال النظر إلى شريط التقدم (على سبيل المثال، 1/22) أو عنوان URL (على سبيل المثال، /1).
انقر على الأداة المرجعية في شريط الإشارات المرجعية.
يتم نسخ جدول المحتويات إلى الحافظة الخاصة بك.
استخدام جدول المحتويات
انقر على أيقونة القلم لتعديل المنشور.
الصق الكود في الأعلى.
تحقق مما إذا كانت عناصر جدول المحتويات معروضة بشكل صحيح (مشكلة معروفة: الأداة المرجعية تفوت بعض الرموز التعبيرية).
(اختياري) قم بتغيير/ترجمة “جدول المحتويات”.
(اختياري) احذف open إذا كنت تريد طي جدول المحتويات افتراضيًا.
انقر على “حفظ التعديل”. إذا قمت بذلك في غضون دقائق قليلة بعد نشر المنشور، فلن تتم إضافة أيقونة القلم “تم التعديل” إلى منشورك.
ملاحظات فنية للمهتمين
يمكنك أيضًا نسخ ولصق كود JavaScript في وحدة تحكم المطور.
لقد قمت بتغليف الكود في دالة لأن return; لا يعمل عند استخدامه خارج الدوال.
يبدو نهج '\u0026nbsp;'.repeat() فوضويًا عند معاينة الموضوع، ولكنه يبدو الأفضل في المنشور الفعلي (مقارنة باستخدام <li></li>) في رأيي.
عندما اختبرت querySelectorAll، بطريقة ما لم يتم العثور على العنصر الأول في h6 a.anchor,h5 a.anchor, .... وضعت h6 في البداية لأنها ربما تستخدم بأقل تكرار.
قد تتوقف الأداة المرجعية عن العمل إذا قام Discourse بتغيير واجهته/نموذج كائن المستند الخاص به. يرجى الرد علي إذا وجدت أخطاء.
لقطات شاشة
كمستخدم جديد في meta.discourse.org، لا يمكنني إضافة صور متعددة، لذلك أقوم بتجميع جميع لقطات الشاشة في صورة واحدة:
أحببت الطريقة التي عرضت بها المشكلة التي تحلها بهذه الأداة، وكيف تم تصميمها لتلبية احتياجات المستخدمين المهمين في المواقع الذين قد لا يمتلكون صلاحيات لتغيير الأشياء في الموقع نفسه كما هي اليوم.
كما يقول @Lhc_fl، فإن نهج DOM (HTML/JavaScript) محدود في عدد العناصر التي يمكننا إدارتها. قد تساعد واجهة برمجة تطبيقات Discourse في مثل هذه الإجراءات.
مشكلة أخرى في إنشاء جدول المحتويات للردود هي أنه ليس من السهل تحديد عنوان العنوان لكل رد. يمكننا استخدام معلومات مثل المؤلف والتاريخ، لكنني لست متأكدًا من مدى فائدتها مقارنة بشريط تقدم التمرير الحالي.
ستكون إضافة لمحرر رائعة، ولكن سيتطلب الأمر الكثير من الجهد لقراءة الكود المصدري لـ discourse لفهم منطق التعامل مع الرموز التعبيرية وتحديد نص العنوان/المرساة وإنشاء مستودع للإضافة.
إضافة (تبدو) بسيطة مثل Spoiler Alert هي مستودع كبير وليس لدي وقت كافٍ للالتزام الكامل بالتطوير. لذا، آمل أن يعطي Discourse الأولوية لطلبات الميزات مثل Automatic Table of Contents generation ويطور ميزة أصلية في هذه الأثناء
أدناه الإصدار مع النقاط. المسافات بين <ul> و </ul> كبيرة جدًا، لذا فضلت الإصدار الأصلي غير المنقط.
عندما لا يكون DiscoToC متاحاً
نعم، هذا هو التمييز. لقد أنشأت الـ bookmarklet لأنني لست في وضع يسمح لي بتحديد “مكون السمة” الذي يجب تثبيته في المنتدى الذي أتواجد فيه عادةً، وقليلون فقط هم من يكتبون نصوصاً طويلة تحتاج إلى جدول محتويات.
للأسف، هذا المكون الإضافي غير قابل للاستخدام تمامًا عندما يكون العنوان أطول من بضع كلمات، لأنه يحدث فوضى كاملة في الأمور. إذا كانت العناوين عبارة عن سطر أو سطرين (على سبيل المثال، صفحة الأسئلة الشائعة)، فإن المكون الإضافي Disco TOC يُحدث فوضى كاملة في الصفحة، وهذا هو سبب طرحي لهذا الطلب لجدول محتويات مضمن (والذي يوفره هذا) وهو مثالي لمثل هذه الصفحات
مع كمية العبقرية/الموهبة بين الفرق التي تبني Discourse، لا ينبغي أن يكون من الصعب جدًا تضمين هذه الميزة المذهلة كبديل لـ DiscoTOC لمنحها نطاقًا أوسع بكثير من الاستخدام.