مكونات مخصصة -- إضافة زر أو نص في أي منفذ إضافي (outlet) للمكون الإضافي

:information_source: ملخص أضف زرًا أو نصًا في أي مكان
:hammer_and_wrench: المستودع https://github.com/literatecomputing/discourse-custom-components
:question: دليل التثبيت كيفية تثبيت سمة أو مكون سمة
:open_book: جديد في سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

تثبيت مكون السمة هذا

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

لمعرفة أماكن وجود منافذ المكونات الإضافية، استخدم Introducing Discourse developer toolbar للعثور عليها. إذا لم تكن تعرف ما هو منفذ المكون الإضافي، يمكنك إلقاء نظرة على https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727، ولكن هذا المكون يسمح لك، مع بعض القيود، بلصق نص في أي منفذ مكون إضافي دون برمجة أو فهم حقيقي لما هو منفذ المكون الإضافي.

بدأت في تطوير هذا المكون الإضافي لشخص أراد عرض زر “انقر فوق هذا الزر للاشتراك حتى تتمكن من إرسال رسائل خاصة” على ملفات تعريف المستخدمين وبطاقات المستخدمين. أرادوا أن يظهر الزر إذا لم يتمكن المستخدم من إرسال رسائل خاصة. نظرًا لأنني لست دائمًا ذكيًا كما أعتقد، فقد كتبت المكون باستخدام المجموعات لتحديد متى يتم عرض الزر. كانت إحدى مشكلات هذا النهج هي أن الموظفين لم يكونوا في مجموعة المشتركين، لذلك سيحصلون على زر “عليك الاشتراك” على الرغم من أنهم يستطيعون إرسال رسائل خاصة. بالإضافة إلى ذلك، كانت المجموعة مخفية، لذلك كان من المستحيل استخدامها في مكون سمة على أي حال. لقد أعدت كتابة مكون السمة هذا لاستخدام currentUser.can_send_private_messages لتحديد ما إذا كان سيتم عرض الزر.

لمن هذا؟

إذا كنت تريد وضع زر به رابط، أو بعض النصوص العشوائية التي يتم عرضها أو إخفاؤها لمجموعات معينة، فهذا سيسمح لك بإدراجها في أي منفذ مكون إضافي. هل تريد إضافة زر رابط “يجب عليك الاشتراك” بين كل رسالة باستثناء تلك التي ليست أعضاء؟ هذا سيفعل ذلك. هل تريد لصق أي HTML في منفذ مكون إضافي، فقط لمعرفة كيف سيبدو؟ هذا سيفعل ذلك.

كيف يساعد المطورين

تحتوي هذه السمة على بعض الأمثلة البسيطة لكيفية:

ولكن إذا كنت تحاول القيام بذلك داخل \u003ctemplate\u003e داخل ملف .gjs، فإنه يعمل بشكل مختلف قليلاً (مثل {{htmlSafe component.text}})

17 إعجابًا

تؤدي المسافة إلى جعل النص غير عريض.


مكون رائع!

5 إعجابات

هل سيكون من الممكن إضافة عناصر نائبة إلى عناوين URL للأزرار، على سبيل المثال، لكي يحتوي عنوان URL على معرف الموضوع الذي يوجد به المستخدم؟

لست متأكدًا تمامًا. إذا كانت لديك ميزانية، فسألقي نظرة.

ماذا سيفعل زرّك إذا كان لديه معرف الموضوع؟

إذا اكتشفت الأمر وأردت تقديم طلب سحب، فمن المحتمل أن أقبله.

أنا متأكد إلى حد كبير أن الإجابة هي لا، ولكن يمكنك استخدام الحل البديل الموضح هنا

إعجابَين (2)

مرحباً @pfaffman

نريد إضافة مجموعة أزرار كهذه إلى كل موضوع للمستخدمين في مجموعة حسابات أعمالنا.
سيؤدي الزر بعد ذلك إلى إنشاء رسالة خاصة جديدة تتضمن عنوان URL الحالي الذي يتواجد عليه المستخدم.

بهذه الطريقة يمكن لعملائنا من قطاع الأعمال إرسال طلبات إلينا لتثبيت مواضيع معينة أو تمييزها أو “رعايتها”.

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

كما تعرف، يمكنك إنشاء عنوان URL يفتح منشئ موضوع جديد. يمكنك جعل هذا هو الرابط الذي يضيفه مكون السمة.

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

3 إعجابات

كتلة النص التجريبي غير محاذية لزر العرض والبقية. أستخدم extra-nav-item في مخرج الكتلة.

أعتقد أنك بحاجة إلى إضافة فئة تلك الأزرار الأخرى إلى الزر الذي أضفته.

ماذا تقصد؟ لقد حاولت استخدام نفس الفئة مثل زر العرض التجريبي.

Screenshot 2025-12-14 at 7.19.54 PM

Screenshot 2025-12-14 at 7.19.18 PM

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

مكون السمة (theme component) وضع النص في المكان الذي تريده، ولكنه غير مصمم لتصميمه بالطريقة التي تريدها.

إضافة هذا إلى ملف CSS الخاص بك في سمة ما يجب أن ينجح.

.custom-component.btn-custom {
  display: inline-flex;
  align-self: center;
}

مرحباً، إنها لا تعمل. وأيضاً حتى إذا تم تعيين “مجموعات كتل النص” (Text Block Groups) على “الجميع” (Everyone)، فإن كتلة النص لا تظهر للضيوف.

يجب عليك مطابقة فئة كتلة النص في إعدادات السمة مع الفئة الموجودة في ملف CSS الذي أريتك إياه.

أيضًا، يجب عليك تغيير الإعداد لتعيينه على إخفاء المجموعات المطابقة بدلاً من العرض للمجموعات المطابقة

image

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

شكراً! لقد نجحت في تشغيل CSS!

رائع! سعيد لأنه يعمل! لا تزال أمور الـ CSS تلك صعبة بالنسبة لي.