المشكلة: أريد أن أتمكن المستخدمين من النشر باسم شخصياتهم في لعبة الأدوار الجماعية (RPG). أود أن يكون بإمكانهم إدراج قالب في المنشور — شيء ما يشبه ما يلي:
ثم استخدام سكربت بحيث تُستبدل الصورة بالأفاتار الأصلي، وتُضاف رابط موضوع اسم الشخصية قبل اسم المستخدم. على سبيل المثال، إذا كان المنشور يعرض عادةً «اسم المستخدم»، فأريد استبداله بـ «اسم الشخصية، يلعبها اسم المستخدم».
(سيشمل «اسم الشخصية» رابطًا إلى موضوع يحتوي على ورقة الشخصية، آملًا في استخدام مكوّن wikilinks theme لمجرد سهولة الاستخدام.)
لقد ألصقت هيكل منشور في Codepen وتمكنت من كتابة بعض جافاسكريبت يقوم بذلك بالضبط. ومع ذلك، عندما حان وقت إضافته إلى مُزيّن المنشورات (post decorator) وجعله يعمل مباشرةً مع واجهة البرمجة (API)، اصطدمت بجدار.
إليك ما لدي حاليًا في common>header:
<script type="text/discourse-plugin" version="0.8">
api.decorateCookedElement(
element => {
// ابحث عن وسم characterpost داخل المنشور
const characterPost = element.querySelector('[data-wrap="characterpost"]');
// ابحث عن الوالد لوسم characterpost، الذي يحتوي على الأفاتار واسم المستخدم
const characterPostParent = characterPost.closest('article');
// اجعله أحمر لرؤية ما إذا كان يعمل
characterPostParent.style.backgroundColor = "red";
},
{
id: 'render-character-post', onlyStream: true, afterAdopt: true
}
);
</script>
كان هذا يعرض خطأ. هل من الممكن الوصول إلى غلاف «article» للمنشورات باستخدام decorateCookedElement حتى أتمكن من الوصول إلى اسم المستخدم والأفاتار؟ وإذا لم يكن ذلك ممكنًا، فكيف يمكنني القيام بذلك؟
سؤال جيد! اسم العلامة ومحتواها جزء من محتوى المنشور؛ قد يؤثر هذا على نتيجة البحث.
سأجرب شيئًا أنظف، مثل استخدام نافذة منبثقة والحفظ في حقول مخصصة بدلاً من ذلك.
تعديل: أعتقد أنني أسأت الفهم :ابتسامة: إذا كنت تتحدث عن ظهور التغييرات في نتيجة البحث، فالإجابة هي لا (ولن يظهر كود HTML أيضًا).
قد يكون من المفيد اقتراح دليل قوالب المنتدى في الويكي المجتمعي. غالبًا ما يبحث الأشخاص عن أفكار حول أنواع مختلفة من إعدادات المنتديات. في هذه الحالة، قد يكون الأمر متخصصًا. ولكن قالب لعبة تقمص الأدوار على الطاولة يتضمن هذه الميزة التي أنشأتها.