كيفية تزيين عمود قبل طهيه؟

أنا أكتب مكونًا للسمة وأود تزيين/تعديل المنشورات قبل طهيها. كيف يمكنني الوصول إلى النص/المنشور غير المطبوخ (للمنشور الذي على وشك أن يُطهى/يُعرض)؟

قرأت “دليل المطورين لمواضيع Discourse” ووجدت أنه يمكنني تعديل المنشور المطبوخ باستخدام دوال pluginAPI مثل decorateCooked/decorateCookedElement و addPostTransformCallback، لكنني لم أجد كيفية الحصول عليه قبل أن يُطهى.

كما نظرت في وحدات التحكم والمكونات، لكن دون جدوى.

يجب عليك استخدام هذه الدالة:

التي ستقوم بكتابة ما يلي فوقه:

وبذلك يمكنك تعديل المنشور قبل حفظه.
مع السلامة. :smiley:

شكرًا على ردك! لكنني لا أريد حفظ تعديلات النص، بل أريد تغييره بعد حفظه وقبل عرضه (وقبل طهيه).

السبب هو أنني أريد أن يظهر النص الأصلي إذا قام المستخدم بتحرير المنشور. أشك في أنه إذا استخدمت composerBeforeSave، فسيظهر النص المعدل عند التحرير (؟).

إذا كنت ترغب في تنفيذ ذلك كقالب، فإن هذا هو خيارك الوحيد. إدخال المستخدم (Markdown) → معالجة من جانب الخادم بلغة Ruby → (HTML) استرجاعه من قبل مستخدمين آخرين وإمكانية تزيينه. هذه هي الوظيفة التي سيتم استدعاؤها قبل الضغط على زر الحفظ/الرد. لن تظهر في المسودات، لكنك محق في أنها ستظهر إذا قمت بتحرير المنشور. إذا أردت تجاوز ذلك، فعليك التراجع عن التغييرات التي تجريها عند الحفظ عندما يفتح المحرر أو ينتقل إلى المنشور الذي عدلته. يمكنني الدخول في مزيد من التفاصيل، أو يمكنك ببساطة قراءة الكود وإجراء تجاربك الخاصة.
تحياتي! :smiley:
تعديل: لقد فكرت للتو في هذا. نظريًا، يمكنك أيضًا إعادة المعالجة من جانب العميل. لكني أعتقد أن ذلك فكرة سيئة من حيث الأداء ولأسباب أخرى. أو يمكنك ببساطة إنشاء إضافة: (Superseded) Plugin Tutorial #1 - How to manipulate the text in the composer?

سأقوم بقراءة المزيد حول الإضافات! لكن على الأرجح سأقوم فقط بتعديل المنشور المطبوخ بدلاً من ذلك (وهو بالضبط ما قلت إنني لا أريده :smile:).

شكراً جزيلاً مرة أخرى!