إضافة Gatsby لاستخدام Discourse كنظام إدارة محتوى بلا رأس

لقد قمت بإنشاء إضافة، ليست لـ Discourse بل لـ Gatsby. تستخرج الإضافة قوائم المواضيع من تثبيت Discourse وتحولها إلى عقد Gatsby. هذا يبسط استخدام Discourse كنظام إدارة محتوى منفصل (Headless CMS).

نستخدمها في مشروع لبناء مدونة صغيرة وتقويم يتم تحديثه تلقائيًا عند إضافة محتوى جديد إلى المنتدى.

إليك المدونة الصغيرة:

المصدر: https://foodshift.se/t/forenade-inkop-nyheter-blogg/290/9
النتيجة: https://forenadeinkop.se/blogg

وإليك التقويم:

المصدر: https://foodshift.se/tags/c/events/13/forenade-inkop/l/agenda
النتيجة: https://forenadeinkop.se (في الأسفل)

آمل أن يجدها شخص آخر مفيدة!


إصدار npm تنزيلات npm

gatsby-source-discourse-topic-list يساعدك على استخراج قوائم المواضيع من منصة منتدى المناقشة Discourse وتحويلها إلى عقد Gatsby.

بالإضافة إلى قائمة المواضيع التي توفرها واجهة برمجة تطبيقات Discourse، تقوم الإضافة أيضًا بجلب النص الخام لكل موضوع.

البدء

  1. قم بتثبيت الحزمة باستخدام yarn أو npm

yarn add gatsby-source-discourse-topic-list

  1. أضفها إلى الإضافات في ملف gatsby-config.js الخاص بك
module.exports = {
    plugins: [
        {
            resolve: "gatsby-source-discourse-topic-list",
            options: {
                url: "https://my-discourse-server.com"
                endPoint: 'top.json',
            }
        }
    ]
};

الخيارات

الاسم النوع الوصف
url كائن أو نص مطلوب. عنوان URL لتثبيت Discourse الخاص بك كنص. إذا كان لديك واجهتان برمجتان مختلفتان للتطوير والإنتاج، عرّف كائنًا بالمفاتيح production و development.
endPoint نص مطلوب. أي نقطة نهاية لواجهة برمجة تطبيقات Discourse تُرجع topic_list.
rootKey نص اختياري. سمِّ واجهتك البرمجية.

أمثلة على نقاط نهاية واجهة برمجة تطبيقات Discourse

أحدث المواضيع في فئة:

options: {
    url: "https://meta.discourse.org"
    endPoint: 'c/1.json',
}

أحدث المواضيع في فئة، مع تصفية حسب الوسم:

options: {
    url: "https://meta.discourse.org"
    endPoint: 'tags/c/bug/1/pr-welcome.json',
}

أهم المواضيع في فئة:

options: {
    url: "https://meta.discourse.org"
    endPoint: 'c/support/6/l/top.json',
}

راجع توثيق واجهة برمجة تطبيقات Discourse للحصول على قائمة كاملة بنقاط النهاية.

مثال على النتيجة

لاحظ الحقل المضاف raw الذي يحتوي على نص الموضوع الكامل غير المعالج.

{
  "users": [
    {
      "id": 0,
      "username": "string",
      "avatar_template": "string"
    }
  ],
  "topic_list": {
    "can_create_topic": true,
    "draft": {},
    "draft_key": "string",
    "draft_sequence": 0,
    "for_period": "string",
    "per_page": 0,
    "topics": [
      {
        "id": 0,
        "title": "string",
        "fancy_title": "string",
        "slug": "string",
        "raw": "نص الموضوع الكامل غير المعالج بتنسيق Markdown", 
        ...
      }
    ]
  }
}

مصادر متعددة؟ حالات متعددة!

إذا كنت ترغب في جلب نقاط نهاية متعددة في مشروعك، فقط قم بإنشاء الإضافة عدة مرات. فقط تأكد من تعيين rootKey مختلف لكل حالة.

الاعتمادات

تُبنى هذه الإضافة على gatsby-source-custom-api الممتاز من Andreas Faust. :folded_hands:

المساهمة

كل مساهمة موضع تقدير كبير.
لا تتردد في الإبلاغ عن الأخطاء أو طلبات الميزات وسحب الطلبات.

:heart: إذا كانت هذه الإضافة مفيدة لك، قم بتمييزها بنجمة على GitHub.

يبدو هذا رائعًا. هل يعمل هذا مع المواضيع من الفئات الخاصة؟ أنا أتحدث عن سيناريو استخدام Discourse كنظام إدارة محتوى رئيسي (headless CMS).

ليس حاليًا، لكن هذه فكرة جيدة، ولن يكون من الصعب إضافتها. يتطلب الوصول إلى المحتوى الخاص المصادقة. يمكن إضافة اسم مستخدم ومفتاح API إلى تكوين Gatsby.