إجمالي عدد الموضوعات / الموضوعات شهريًا في صفحة الفئة

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

إذن، كيف يرتبط هذا بما يعرضه Discourse لك؟ هل يعرض 2 / أسبوع أم 17 / شهر أم 4.4k؟

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

كيف تعمل هذه الآلية؟ دعنا نبدأ ببعض المعلومات الأساسية التي يخزنها Discourse لكل فئة. لكل فئة هذه الخصائص الأربع:

topics_day: 12
topics_month: 95
topics_week: 53
topics_year: 874
topics_all_time: 13982

يمثل كل منها عدد المواضيع الجديدة التي تم إنشاؤها في الفئة أو في إحدى فئاتها الفرعية ضمن ذلك الإطار الزمني. دعنا نتجاهل إطاري الوقت اليومي والسنوي لأنهما غير ذوي صلة هنا.

لنلقِ نظرة على بعض الأكواد:

discourse/app/assets/javascripts/discourse/app/models/category-list.js at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

ولنركز تحديداً على هذا الجزء

ماذا يحدث هنا؟ حسناً، نبدأ بـ 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.4k كما هو موضح في لقطة الشاشة الخاصة بك.

ملاحظة: بالإضافة إلى إطارَي الوقت “أسبوع/شهر”، إذا كانا مناسبين، فإن الإجمالي أو “الكل” يُعرض دائماً على الهاتف المحمول.

إذن، دعنا نحاول فهم المشكلة في مشاركتك. يرى المستخدم الجديد 22 / شهر، وأنت كمسؤول ترى 4.4k، ما السبب؟

حسناً، تتذكر هذا؟

الإجابة المختصرة هي أن القائمة التي تراها كمسؤول تحتوي على فئات مختلفة. بصفتك مسؤولاً، لديك إمكانية الوصول إلى الفئات الخاصة.

لذا، دعنا نقوم ببعض الحسابات…

يحتوي موقعك على 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.4k كما هو موضح في لقطة شاشة المسؤول الخاصة بك.

مع ذلك، يبدو أن الرقم السحري في Discourse - 0.66 - مرتفع قليلاً وقد يستفيد من بعض التخفيض ليتناسب مع المواقع التي تحتوي على عدد كبير من الفئات ذات النشاط المعتدل. إن نشاط 40% من فئات الموقع لا يزال جيداً جداً. يمكنك أيضاً محاولة الحظ وطلب إعداد لموقع للتحكم في ذلك في موضوع Contribute > Feature.

بدلاً من ذلك، يمكنك تجاوز كل ذلك في مكون سمة (theme component). شيء مثل هذا في علامة التبويب “الرأس المشترك” (common header) في سمتك.

<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 إلى عدد المواضيع الجديدة التي تم إنشاؤها هذا الأسبوع في فئة معينة لتُعتبر نشطة. يجب أن يعمل الباقي تلقائياً.