هل من الممكن الحصول على تفاعلات مواضيع ومنشورات خاصة بالفئات؟
لا أجد أي شيء جاهز أو أي مكونات موجودة.
إذا لم يكن ذلك ممكنًا حاليًا، فما هي الخطوات اللازمة لتحقيق شيء كهذا؟
هل من الممكن الحصول على تفاعلات مواضيع ومنشورات خاصة بالفئات؟
لا أجد أي شيء جاهز أو أي مكونات موجودة.
إذا لم يكن ذلك ممكنًا حاليًا، فما هي الخطوات اللازمة لتحقيق شيء كهذا؟
مرحباً نواه،
أنت على حق، لا توجد طريقة حاليًا لعرض ردود فعل مختلفة للمنشورات/المواضيع بناءً على فئة معينة.
أفضل ما يمكنك فعله هو السؤال في Marketplace
ممتاز ![]()
لدي بعض الخبرة في تطوير العمل في بيئات أخرى، ولكني أستكشف ما إذا كان ذلك ممكنًا عبر مكون سمة.
بمساعدة بسيطة من الذكاء الاصطناعي
يبدو أنني جعلته يعمل، ولكني لست متأكدًا بنسبة 100٪ ما إذا كان هذا دقيقًا بالطريقة التي يجب تحقيقها في Discourse:
<script type="text/discourse-plugin" version="0.1">
api.onPageChange(() => {
try {
const isTopicPage = /^\/t\//.test(window.location.pathname);
// فقط قم بالتشغيل في صفحات الموضوع
if (!isTopicPage) return;
const allowedCategories = ['ask-a-question']; // استخدم أسماء الشرائح للفئات مباشرةً
// الوصول إلى تفاصيل الموضوع للحصول على شريحة الفئة
const topic = Discourse.__container__.lookup("controller:topic");
const categorySlug = topic && topic.get("model.category.slug");
const isAllowedCategory = categorySlug && allowedCategories.includes(categorySlug);
// وظيفة لإخفاء أو إظهار الرمز التعبيري المحدد
const toggleReactionEmoji = () => {
const emoji = document.querySelector("[data-reaction='frog']");
if (emoji) {
emoji.style.display = isAllowedCategory ? '' : 'none';
console.log(`Emoji with data-reaction='frog' ${isAllowedCategory ? 'shown' : 'hidden'}.`);
}
};
// التحقق الأولي في حالة وجود العنصر بالفعل في DOM
toggleReactionEmoji();
// إعداد مراقب طفرة لإخفاء/إظهار الرموز التعبيرية بناءً على تغييرات الفئة
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1) { // تحقق مما إذا كان عقدة عنصر
const emoji = node.querySelector("[data-reaction='frog']");
if (emoji) {
emoji.style.display = isAllowedCategory ? '' : 'none';
console.log(`Emoji with data-reaction='frog' found in mutation and ${isAllowedCategory ? 'shown' : 'hidden'}.`);
}
}
});
});
});
// مراقبة الجسم لتغييرات قائمة الأطفال (على سبيل المثال، إضافة ردود فعل)
observer.observe(document.body, { childList: true, subtree: true });
// تنظيف المراقب عند التنقل بعيدًا
api.cleanupStream(() => observer.disconnect());
} catch (error) {
console.error("An error occurred in the emoji toggle script:", error);
}
});
</script>