أين يذهب المجلد المشترك (لـ html) في إضافة؟

أرغب في تعديل بعض عناصر HTML الأساسية في إضافة أقوم بتجربتها (سيكون من المريح أن تكون جميع التعديلات في إضافة واحدة). سيكون هذا HTML أضعه في قسم header من مخصص السمات في لوحة تحكم المسؤول، لو كنت أستخدم تلك اللوحة بدلاً من إضافة.

في سمة، ستجد مجلداً مباشراً يحمل اسم common يحتوي على ملفات مختلفة، مثل header.html.

أعرف أن ملفات الأنماط الشائعة للإضافات يمكن وضعها في plugin/assets/stylesheets/common. إذن أين يجب أن أضع ملف header.html هذا في إضافة؟

ما الذي يحتويه ملف html الخاص بك؟

عادةً ما توضع السكريبتات في مُهيئ (initializer) أو يتم تشغيلها بواسطة حدث في مكون ما.

تذهب استدعاءات واجهة برمجة التطبيقات (API) للإضافة إلى المُهيئ.

تُربط التغييرات في القوالب على الأرجح بموصل الإضافة (أو في حال الضرورة القصوى فقط: قم بعبورها في مجلد القوالب).

قد تقوم أيضًا بتزيين أو إعادة فتح الأدوات (widgets) في المُهيئ.

لا ينبغي أن تحتاج إلى وضع «html عاري» في أي مكان، فبعد كل شيء، ما تقوم بتعديله فعليًا هو تطبيق ويب، وليس صفحة ويب؟

على أي حال، لن يكون هناك ضرر معين في تشغيل عدة إضافات وTCs جنبًا إلى جنب…

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

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

أين تضع HTML في ملحق، لو كنت تصنع سمة، ستضعه في “رأس الصفحة” في المجلد المشترك؟

لا يوجد ما يعادل ذلك مباشرةً حسب علمي.

ولا تحتاج إليه أيضًا.

انقل ما تحاول القيام به.

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

بالنسبة لـ CSS، المكافئ في الإضافة هو [plugin]/assets/stylesheets/common/[file.scss]

اتباعًا لهذا التنسيق، حاولت إضافة ملف في [plugin]/assets/views/layouts/common/header.html، لكنه لم ينجح (كما أن مجرد استخدام views/header.html لم ينجح أيضًا).

يمكنني تغيير القوالب، لكن بالنسبة لتغييرات HTML البسيطة مثل تلك التي نقوم بها في السمات، سيكون من الجيد إجراء تغيير HTML بسيط في header.html (أو ما يعادله). على سبيل المثال، أين ستضع التالي في إضافة (تقوم بالفعل بأشياء معقدة على جانب الخادم، ومن هنا الحاجة إلى إضافة):

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

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

أعتقد أنك بحاجة إلى إضافة سطر إلى ملف plugin.rb يتضمن الملف الذي تريده. ما أفعله هو استنساخ شيء من مستودع discourse على GitHub يُسمى all-the-plugins، ثم أبحث في grep هناك عن مثال.

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

رائع. شكرًا لك. نعم، كنت أفكر ربما أن الوضع هو أنه لا توجد حاليًا طريقة مباشرة لإجراء تغييرات HTML في ملحق كما تفعل في سمة—لإجراء تغييرات HTML يجب عليك الدخول إلى القوالب/الموصلات في ملحق (ليس معقدًا للغاية، لكنه مختلف عن عقلية السمات البسيطة مثل common/header.html).

سألقي نظرة على plugin.rb لأرى ما إذا كان ذلك أسهل حاليًا من مجرد اتباع مسار القالب/المكون العادي.

راجع How to override a template.hbs from a plugin - #4 by tshenry. أعتقد أن هذا هو السحر الذي تبحث عنه.

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

تعديل: مرحبًا @JQ331. أدركت للتو أنني أعتقد أنني قمت بما تريده في إضافة أمس، لكنني سيء جدًا في ذلك لدرجة أنني لم أدرك أن هذا ما تبحث عنه. راجع GitHub - literatecomputing/discourse-max-topics-per-month · GitHub. إنه بسيط جدًا، لذا لا يوجد ما يعيقك عن العثور على المثال.

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