كيفية عرض إجمالي مشاركات المستخدم بجانب الاسم

مرحباً بالجميع، هذه أول مشاركة لي هنا. أتساءل كيف يعرض منتدى Blizzard العدد الإجمالي للمشاركات للمستخدم بجانب اسمه.


لقد طبقت شيئًا مشابهًا في منتدياتي باستخدام نظام Discourse API كما يلي

لكنني أعتقد أن هناك طرقًا أفضل للقيام بذلك. أخطط أيضًا لعرض شارات المستخدم وما إلى ذلك. هل يمكن لأي شخص مساعدتي في هذا؟ شكرا لكم.

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

أتساءل عما إذا كان هناك أي نظام قوالب/رموز مختصرة موجود.

مرحباً!

إذا كنت تستخدم واجهة برمجة التطبيقات (API)، فأعتقد أن هذه هي الطريقة الصحيحة.

هل يمكنك مشاركة الكود الخاص بك معنا؟ يمكننا تقديم اقتراحات للتحسين، إذا لزم الأمر. :slight_smile:

إعجاب واحد (1)
  api.onPageChange(() => {
    // التحقق مما إذا كان العنصر بالمعرف 'topic' موجودًا
    if ($('#topic').length > 0) {
      // إذا كان العنصر 'topic' موجودًا، فابحث عن السمة 'data-user-id'
      var userId = $('#topic article').data('user-id');

      // التحقق مما إذا كانت السمة 'data-user-id' موجودة
      if (userId !== undefined) {
        // إجراء طلب API للحصول على معلومات المستخدم
        apiReq(`admin/users/${userId}.json`, 'GET')
          .then(data => {
            // معالجة بيانات الاستجابة
            console.log('عدد مشاركات المستخدم:', data.post_count);

            // التحقق مما إذا كان للمستخدم قيمة في user_fields["1"]
            if (data.user_fields && data.user_fields["1"]) {
              // عرض حقل المستخدم داخل أول قسم 'names'
              displayUserField(data.user_fields["1"]);
            }

            // عرض عدد المشاركات داخل أول قسم 'names'
            displayPostCount(data.post_count);
          })
          .catch(error => {
            // معالجة الأخطاء
            console.error('خطأ في طلب API:', error);
          });
      } else {
        console.log('لم يتم العثور على السمة data-user-id');
      }
    } else {
      console.log('لم يتم العثور على عنصر بالمعرف "topic"');
    }
  });

  // وظيفة لعرض حقل المستخدم داخل أول قسم 'names'
  function displayUserField(userFieldValue) {
    // البحث عن أول قسم 'names'
    var firstNamesDiv = $('.names:first');

    // إنشاء عنصر span بفئات 'user-title'
    var userFieldSpan = $('<span></span>').addClass('user-title');
    userFieldSpan.text(userFieldValue);

    // إلحاق عنصر span بأول قسم 'names'
    firstNamesDiv.append(userFieldSpan);
  }

  // وظيفة لعرض عدد المشاركات داخل أول قسم 'names'
  function displayPostCount(postCount) {
    // البحث عن أول قسم 'names'
    var firstNamesDiv = $('.names:first');

    // إنشاء عنصر span بفئات 'user-title'
    var postCountSpan = $('<span></span>').addClass('user-title');
    postCountSpan.text(postCount + ' posts');

    // إلحاق عنصر span بعدد المشاركات بأول قسم 'names'
    firstNamesDiv.append(postCountSpan);
  }

لدي وظيفة apiReq في مكون آخر

في Blizzard، يعرضون عدد المشاركات بجوار المعلقين وهو ما لم أتمكن من تحقيقه.

حسنًا، أنت تستخدم الواجهة البرمجية جزئيًا. يمكنك بالتأكيد تحسين هذا الكود. امنحني بضع دقائق، وسأعود إليك.

إعجابَين (2)

يبدو جيدًا. أنا جديد في Discourse لهذا السبب أعرف القليل جدًا عنه.

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

كان عليّ إنشاء إضافة بدلاً من ذلك.

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

جرب ذلك. الجزء الخاص بـ JavaScript موجود في assets إذا كنت ترغب في إلقاء نظرة.
شيء واحد محدد قد تكون قد أغفلته عند استخدام واجهة برمجة التطبيقات (API) هو القدرة على التخصيص عبر outlets.

أخبرني إذا كنت تريد المزيد من الخيارات.
لا أعرف ما إذا كان ينبغي لي إصدار هذه الإضافة لأنها صغيرة، ولكن ها هي على أي حال:

5 إعجابات

شكراً جزيلاً على هذا الجهد. سأجربه.
كانت خطتي الفعلية هي تحقيق الميزة التالية:

  1. عرض عدد منشورات المستخدم في المنشورات والتعليقات بجوار الصورة الرمزية.
  2. تعيين عنوان افتراضي لجميع أعضاء المجموعة (مثل: مسؤول).
  3. عرض مستوى الثقة بجوار الصورة الرمزية.
  4. عرض شارة بجوار الصورة الرمزية.
  5. عرض قيمة حقل مستخدم بجوار الصورة الرمزية.
    ويمكن للمسؤول تغيير الخيارات.
    كما خططت لربط عدد المنشورات تشعبياً حتى يتمكن الآخرون من النقر لرؤية قائمة المنشورات.

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

لقد قمت بتثبيت المكون الإضافي ولكنه لا يعمل.

لقد اختبرته مرة أخرى، وهو يعمل بشكل جيد من جانبي.

هل المكون الإضافي ممكّن؟

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

إنه يعمل الآن. شكرا لك.

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

المواضيع التي تم إنشاؤها هو إحصائية أخرى. هل تريد إضافة هذا العدد إلى عدد المشاركات أم إضافة نص جديد بحيث يكون لديك “المواضيع: xx، المشاركات: yy”؟

أنا في الواقع أحاول الحصول على شيء مثل postCount + TopicCount
ببساطة أريد عد المواضيع كمنشورات.
أحاول أيضًا إظهار ذلك بعد عنوان المستخدم (إذا كان لديه أي). لقد حاولت تعديل كود المكون الإضافي (بعد نسخه) ولكن لم أنجح حتى الآن.

لقد قمت بتحديث المكون الإضافي؛ أخبرني إذا كان يعمل لديك.

إعجابَين (2)

شكرا جزيلا. لقد نجح الأمر.

يبدو رائعًا جدًا. هل من الممكن إضافة إجمالي ردود الفعل + أيقونات FA أيضًا؟

لا يمكنني التعديل، لذلك قمت بتثبيت المكون الإضافي واختبرته، وهو يعمل بشكل جيد جدًا. باستثناء الهاتف المحمول، حيث يتم عرض العدد الإجمالي للمشاركات على يسار الاسم. :frowning:

@David_Ghost
يمكنك إصلاح ذلك ببعض CSS:

.names.trigger-user-card > div:has(.user-post-user__container) {
    order: 2;
}
إعجابَين (2)