الإجابة المختصرة هي أنك - بصفتك مسؤولاً - لديك قائمة فئات مختلفة. بصفتك مسؤولاً، لديك حق الوصول إلى الفئات الخاصة. أقول مسؤولاً هنا لتبسيط الأمر، ولكن هذا ينطبق أيضًا على المستخدمين العاديين الذين لديهم حق الوصول إلى الفئات الخاصة. لذلك، فإن العدد الإجمالي للفئات في قائمتك أعلى. لاحظ أنني أتحدث فقط عن الفئات، وليس الفئات الفرعية. يمكنك تجاهل الفئات الفرعية في الوقت الحالي.
إذًا، كيف يرتبط هذا بما إذا كان Discourse يعرض لك 2 / أسبوع أو 17 / شهر أو 4.4 ألف؟
الغرض منه هو أن يكون مؤشرًا على النشاط، ولجعله أكثر صلة، يأخذ في الاعتبار العدد الإجمالي للفئات التي يمكنك الوصول إليها أنت.
إذًا كيف تعمل كل هذه السحر؟ لنبدأ ببعض المعلومات الأساسية التي يخزنها Discourse لكل فئة. كل فئة لها هذه الخصائص الأربع:
topics_day: 12
topics_month: 95
topics_week: 53
topics_year: 874
topics_all_time: 13982
يمثل كل منها عدد الموضوعات الجديدة التي تم إنشاؤها في الفئة أو في إحدى فئاتها الفرعية خلال تلك الفترة الزمنية. دعنا نتجاهل الأطر الزمنية لليوم والسنة لأنهما غير ذي صلة هنا.
دعنا نلقي نظرة على بعض التعليمات البرمجية:
ودعنا نركز بشكل خاص على هذا الجزء
ماذا يحدث هنا؟ حسنًا، نبدأ بـ all كإطار زمني افتراضي. ثم نرى minCategories
minCategories هنا هو العامل الحاسم فيما وصفته أعلاه. إنه رقم سحري إلى حد ما. باللغة الإنجليزية، كل ما يفعله هو أنه يأخذ عدد الفئات من المستوى الأعلى المتاحة لك ويضربه في 0.66
لنفترض أن لديك 5 فئات. نضرب ذلك في 0.66 ونحصل على 7.92
ثم، يتكرر Discourse عبر كل فئة ويتحقق من خاصية topics_week. إذا كان لديها موضوعات جديدة هذا الأسبوع، فسيتم اعتبارها نشطة لهذا الأسبوع، وتحسب كـ 1. ثم يقوم Discourse بتجميع عدد الفئات التي تم اعتبارها نشطة. تتم مقارنة هذا العدد بعد ذلك بـ 7.92 الذي حصلنا عليه أعلاه.
يمكنك رؤية ذلك هنا
if (filteredCategories.length >= minCategories) {
statPeriod = period;
return true;
}
إذا كان العدد أكبر من 7.92 (8 فئات نشطة أو أكثر هذا الأسبوع) فسيعرض Discourse 11 / أسبوع بجوار كل فئة إذا كان ذلك ممكنًا.
حسنًا، ماذا لو كان عدد الفئات النشطة أسبوعيًا أقل من 7.92؟ سيتحقق Discourse بعد ذلك من نفس الشيء ولكن مع النشاط الشهري.
إذا كان العدد أكبر من 7.92 (8 فئات نشطة أو أكثر هذا الشهر) فسيعرض Discourse 22 / شهر بجوار كل من هذه الفئات إذا كان ذلك ممكنًا.
إذا لم يكن عدد الفئات النشطة أسبوعيًا أو شهريًا أكبر من 7.92، فسيعود Discourse إلى الإطار الزمني الافتراضي all ويعرض عدد topics_all_time أو 4.4 ألف كما في لقطة الشاشة الخاصة بك.
ملاحظة: بالإضافة إلى الأطر الزمنية week/month، إذا كان ذلك ممكنًا، يتم دائمًا عرض الإجمالي أو all على الهاتف المحمول.
إذًا، دعنا نحاول فهم المشكلة في منشورك. يرى مستخدم جديد 22 / شهر وأنت كمسؤول ترى 4.4 ألف، ما القصة؟
حسنًا، هل تتذكر هذا؟
الإجابة المختصرة هي أنك - بصفتك مسؤولاً - لديك قائمة فئات مختلفة. بصفتك مسؤولاً، لديك حق الوصول إلى الفئات الخاصة.
لذا، دعنا نقوم ببعض العمليات الحسابية…
يحتوي موقعك على 7 فئات من المستوى الأعلى مرئية لمستخدمنا الجديد كمثال. لذا فإن الرقم السحري هو
7 * 0.66 = 4.62
بمعنى آخر، تحتاج إلى 5 فئات بها موضوعات جديدة هذا الأسبوع حتى يعرض Discourse 11 / أسبوع. هذا ليس هو الحال في موقعك حيث لديك 4 فقط تتطابق مع المعايير - تذكر، إنها موضوعات جديدة، وليس ردود.
لذلك، يتحقق Discourse بعد ذلك من النشاط الشهري، وفي حالتك، لديك 6 فئات شهدت موضوعات جديدة هذا الشهر. 6 أكبر من 4.62، لذا يرى المستخدم المثال لدينا 4 / شهر كما في لقطة الشاشة الخاصة بك.
الآن، دعنا نقوم ببعض العمليات الحسابية لك كمسؤول. لا أعرف عدد الفئات الخاصة لديك ولكن دعنا نفترض أن لديك 4 فئات خاصة. في هذه الحالة، سيكون العدد الإجمالي 11 فئة، وسيكون الرقم السحري
11 * 0.66 = 7.26
لذا لكي ترى 11 / أسبوع، ستحتاج إلى 8 فئات على الأقل بها موضوعات جديدة هذا الأسبوع. إذا لم يكن الأمر كذلك، فسيعود إلى النشاط الشهري، وستحتاج إلى 8 فئات على الأقل بها موضوعات جديدة هذا الشهر لرؤية 4 / شهر. إذا لم ينطبق أي من هذين الأمرين، فستحصل على 4.4 ألف كما في لقطة الشاشة الخاصة بمسؤولك.
مع ذلك، فإن الرقم السحري في Discourse - 0.66 - يبدو مرتفعًا بعض الشيء وقد يستفيد من تخفيض لاستيعاب المواقع التي تحتوي على عدد كبير من الفئات النشطة بشكل معتدل. 40٪ من فئات الموقع النشطة لا يزال أمرًا جيدًا جدًا. يمكنك أيضًا تجربة حظك وطلب إعداد موقع للتحكم في ذلك في موضوع Feature.
بخلاف ذلك، يمكنك تجاوز كل هذا في مكون سمة. شيء مثل هذا في علامة التبويب الشائعة للرأس في السمة الخاصة بك.
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
const { number } = require("discourse/lib/formatter");
const I18n = require("I18n").default;
// category is considered active if it had at least this many topics this week
const WEEK_THROSHOLD = 2;
api.modifyClass("component:parent-category-row", {
pluginId: "category-activity-indicator",
@on("didReceiveAttrs")
setCategoryActivityStats() {
const category = this.category;
if (category.topics_week < WEEK_THROSHOLD) {
return;
}
const statPeriod = "week";
const stat = category[`topics_${statPeriod}`];
const unit = I18n.t(`categories.topic_stat_unit.${statPeriod}`);
category.setProperties({
pickAll: false,
stat: I18n.t("categories.topic_stat", {
count: stat,
number: `<span class="value">${number(stat)}</span>`,
unit: `<span class="unit">${unit}</span>`,
}),
statTitle: I18n.t(`categories.topic_stat_sentence_${statPeriod}`, {
count: stat,
}),
});
},
});
</script>
كل ما تحتاج إلى تغييره هو WEEK_THROSHOLD إلى عدد الموضوعات الجديدة التي تم إنشاؤها هذا الأسبوع في فئة تعتبر نشطة عندها. الباقي يجب أن يعمل.
