أخطط لبناء منصة فوق نسخة مستضافة ذاتيًا من Discourse ستتضمن ميزات مخصصة مختلفة مثل محرك بحث وموارد وثائقية وموسوعات ويكيبيديا والمزيد. تم تطوير هذه الميزات باستخدام HTML و CSS و JavaScript، بشكل أساسي كصفحات ثابتة.
هدفي هو دمج هذه الصفحات المخصصة مباشرة في منتدى Discourse بحيث تظهر كصفحات أصلية بدلاً من منشورات، مما يخلق تجربة مستخدم سلسة حيث تبدو وكأنها جزء لا يتجزأ من المنتدى. أود أن تكون هذه الصفحات الثابتة متاحة لمستخدمي المنتدى، مع تشغيل جميع وظائف JavaScript كما هو مقصود.
هل يمكن لأي شخص تقديم المشورة حول ما إذا كان هذا النهج ممكنًا ضمن Discourse، أو إذا كانت هناك مكونات إضافية أو أفضل الممارسات أو تكوينات محددة يجب أن أبحث عنها؟ أي توجيه حول تضمين وعرض صفحات HTML/JS المخصصة دون جعلها تبدو كمنشورات سيكون موضع تقدير كبير!
حسنًا، كل الميزات التي أخطط لتنفيذها، مثل تلك المذكورة أعلاه، هي رموز ثابتة، مما يعني أن كل شيء يتم بناؤه من خلال HTML و CSS و JS عادي. أتساءل عما إذا كان من الممكن إنشاء صفحة ثابتة، وإضافة الرموز المخصصة للميزات المذكورة إلى مثيلاتي الخاصة من Discourse.
عذرًا لمواصلة هذا، لكن Discourse ليس ثابتًا. إنه ديناميكي. وكذلك معظم حلول JavaScript أيضًا، أو الحلول المستندة إلى PHP.
إذًا، هل هذا الآن سؤال مصطلحات؟ وهل تريد فقط تضمين منتدى Discourse بحد ذاته في صفحة ويب ضمن كل شيء آخر؟ يمكنك عرض المواضيع، لكنك ستفتقد تقريبًا كل وظائف Discourse الأخرى على حد علمي.
لا، الكود الذي أخطط لتطبيقه، مثل الصفحة التي أريد إضافتها إلى منتدى Discourse الخاص بي، هي صفحة ثابتة، لذلك لن يكون هناك أي عرض من جانب الخادم وما إلى ذلك.
لا، أريد إضافة صفحة الويب إلى مثيل منتدى Discourse الخاص بي. عكس ما تقوله في الواقع.
حسنًا، لقد لاحظت أن سؤالي قد يكون مربكًا للغاية، لذلك قمت بتحرير السؤال بالرسالة التي تم إنشاؤها مرة أخرى باستخدام ChatGPT. هذا هو السؤال المعدل:
مرحباً بمجتمع Discourse!
أخطط لبناء منصة فوق نسخة مستضافة ذاتيًا من Discourse ستتضمن ميزات مخصصة مختلفة مثل محرك بحث وموارد وثائقية وموسوعات ويكيبيديا والمزيد. تم تطوير هذه الميزات باستخدام HTML و CSS و JavaScript، بشكل أساسي كصفحات ثابتة.
هدفي هو دمج هذه الصفحات المخصصة مباشرة في منتدى Discourse بحيث تظهر كصفحات أصلية بدلاً من مشاركات، مما يخلق تجربة مستخدم سلسة حيث تبدو وكأنها جزء لا يتجزأ من المنتدى. أود أن تكون هذه الصفحات الثابتة متاحة لمستخدمي المنتدى، مع تشغيل جميع وظائف JavaScript كما هو متوقع.
هل يمكن لأي شخص تقديم المشورة حول ما إذا كان هذا النهج ممكنًا ضمن Discourse، أو إذا كانت هناك مكونات إضافية أو أفضل الممارسات أو تكوينات معينة يجب أن أبحث فيها؟ أي توجيه حول تضمين وعرض صفحات HTML/JS المخصصة دون جعلها تبدو كمشاركات سيكون موضع تقدير كبير!
أسهل طريقة للقيام بذلك هي استضافتها في مكان آخر وإضافة روابط إليها باستخدام مكون سمة (theme component) وجعل هذا الموقع يبدو بنفس مظهر موقع Discourse الخاص بك. لا يلاحظ الناس عناوين URL، لذلك إذا حافظت على التنقل في المواقع الأخرى بحيث يمكن للناس العودة إلى Discourse، فسيتم الأمر ببساطة ولا يلزم أي شيء متطور.
لست متأكدًا تمامًا مما يعنيه ذلك، ولكن إذا كنت تريد حقًا إضافة أيًا كانت ميزاتك المخصصة إلى Discourse، فستحتاج إلى إنشائها كمكونات إضافية (plugins) أو مكونات سمة (theme components).
أعتذر عن التأخير في الرد. الميزات التي أدرجتها هي مجرد أمثلة قليلة للميزات التي أرغب في تنفيذها، ويبلغ عددها حوالي 20 ميزة. كلها مكتوبة باستخدام vanilla JS و HTML و CSS، دون الحاجة إلى أي عرض من جانب الخادم.
أفضل دمجها مباشرة في Discourse، مثل إنشاء صفحة داخل Discourse، وتعديل الصفحة لإضافة جميع الأكواد المخصصة إليها، ونشرها مع Discourse. سيكون من الأسهل عليّ صيانتها، حيث أن كل شيء في مكان واحد، بينما يمكن لمستخدمي الوصول إلى المحتوى من خلال منتدى Discourse مباشرة دون الحاجة إلى مغادرته. هل هذا ممكن من خلال Discourse؟ إذا كان ممكناً، فكيف؟
أرغب في إضافة ميزات مخصصة إلى منتدى Discourse الذي سأستضيفه. تم بناء الميزات المخصصة مباشرة من خلال HTML و CSS و vanilla JS. أتساءل عما إذا كان من الممكن القيام بذلك مباشرة، دون الحاجة إلى إنشاء إضافات.
نهج آخر أستخدمه لما (أعتقد؟) تصفه هنا هو استخدام مدونة/نظام إدارة محتوى Ghost لإنشاء واستضافة صفحات أو مشاركات فردية حيث أريد عرض صفحات مخصصة. يعتبر Ghost مناسبًا بشكل فريد لهذا الغرض نظرًا لمرونته في تضمين وإدراج جميع أنواع التعليمات البرمجية الثلاثة (JS و CSS و HTML) على أساس كل صفحة، و/أو على أساس أقسام/علامات محددة و/أو على أساس الموقع بالكامل من خلال “حقن التعليمات البرمجية في الرأس” و “حقن التعليمات البرمجية في التذييل” وتضمينات التعليمات البرمجية/البرامج النصية المضمنة مباشرة في محرر الصفحة/المشاركة.
ثم لديك خيارات متعددة في Discourse حول كيفية تضمين تلك الصفحات الخارجية أو دمجها بسلاسة في مواقع Discourse الخاصة بك. يمكنك بعد ذلك استخدام RSS أو التعليقات المضمنة أو الإطارات أو الصفحات المرتبطة أو طرق أخرى.
أجد أن هذا المزيج/الاقتران بين Discourse و Ghost يمكن أن يوفر منصة مثالية لحالة الاستخدام هذه حيث تحتاج إلى مرونة الترميز “عند الطلب” وحقن JavaScript التعسفي.
بمجرد أن فهمت (كلا من) نقاط القوة والقيود الطبيعية المتعارضة والمتكاملة تمامًا لكل من هاتين المنصتين (Ghost و Discourse) وكيف يمكن دمجهما وربطهما، لم أجد حلاً أفضل.
بهذه الطريقة يمكنك الحصول على ميزات تنظيم المحتوى القوية للغاية ومنصة المجتمع في Discourse، إلى جانب بساطة نهج Ghost عند الطلب لتحرير التعليمات البرمجية المضمنة ومرونة تضمين JS و CSS و HTML (وحتى Markdown) في صفحات فردية.
ميزة حقيقية هي أن كلا المنصتين، كونهما مفتوحتي المصدر وقائمين على GitHub، لديهما مجتمعات قوية ونشطة وودية وداعمة بشكل مماثل حيث يمكنك المشاركة والحصول على الدعم والتعلم بسرعة وبشكل لا نهائي.