عمليات تثبيت متعددة لمحفظة المستخدم

مرحباً! أعتزم استخدام نسخة Discourse الخاصة بي للعبة تقمص أدوار. سيكون مكون سمة ملف تعريف المستخدم مثالياً لعرض الأشياء التي قدمها المستخدمون. على وجه التحديد، أرغب في أن أكون قادراً على رؤية قائمة بشخصيات المستخدم، وتقديمات المعرفة، ومشاهد تقمص الأدوار في الملف الشخصي.

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

حاولت تنزيل مكون السمة وتحرير الملفات (على سبيل المثال، تغيير حالات portfolio إلى portfolio_2) ثم تثبيت النسخة الجديدة بالإضافة إلى النسخة الأصلية، لكن أياً منهما لا يعمل.

عند تمكين كليهما…

  1. يظهر مثيل واحد فقط لزر الملف الشخصي على بطاقة المستخدم (portfolio_2)
  2. يظهر مثيل واحد فقط لزر الملف الشخصي في ملف تعريف المستخدم (portfolio_2)
  3. صفحة portfolio_2 فارغة في ملف تعريف المستخدم

هل من الممكن جعل هذا يعمل، أم يجب أن أستسلم؟

نشأت هذه الميزة في معاينات قوائم المواضيع. يمكنك أيضًا تجربة ذلك.

في TLP يمكنك أيضًا تحديد تضمين المحفظة حسب العلامة أيضًا.

مما سيسمح لك باختيار المواضيع عبر فئات متعددة.

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

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

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

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

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

لكن بالتأكيد، انظر إلى المصدر وافعل أسوأ ما لديك! :computer: :rocket:

أتفق 100% على أن هذا مكان جيد لحالة الاستخدام العامة. حالة الاستخدام الخاصة بي هي لمجتمع يتمحور حول لعب الأدوار حيث يبحث المستخدمون عن هذه المعلومات بانتظام، لذلك أريد أن تكون أزرار تتبع الشخصيات والمشاهد متاحة بأقل عدد ممكن من النقرات ومرئية للغاية. لا أقصد التقليل من شأن حلك على الإطلاق!

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

لا تقلق. لم آخذ الأمر بهذه الطريقة.

نعم، أرى الفائدة في حالتك. حان الوقت لحل مخصص!

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

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

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

الهدف: عرض قائمة بالمواضيع من فئة معينة في صفحة ملخص المستخدم.
في حالة الاستخدام هذه، إنها لمنتدى RPG حيث سينشئ المستخدمون شخصيات لنشر القصص بها. أريد أن تعرض هذه الإضافة الشخصيات التي أنشأها المستخدم حتى لا يضطر أحد للحفر بعمق للعثور عليها. سيتم تخزين جميع أوراق الشخصيات في نفس المنتدى. لذا، أعتقد أنني أحتاج فقط إلى إنشاء قائمة مواضيع تحصل على مواضيع من المستخدم الصحيح والمنتدى الصحيح.

لقد كنت أستخدم ما يلي كمرجع:

https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949

هذه محاولتي. حتى الآن، يظهر رأس قائمة المواضيع (الموضوع / الردود / النشاط) في المكان الصحيح، ولكنه لا يمتلئ بالمواضيع.

<script type="text/discourse-plugin" version="0.8">
  const ajax = require('discourse/lib/ajax').ajax;
  const Topic = require('discourse/models/topic').default;
  const User = require('discourse/models/user').default;
  // نحتاج إلى ajax و Topic و User

  api.registerConnectorClass('above-user-summary-stats', 'character-list', {
    // above-user-summary-stats هو منفذ الإضافة، character-list هو اسم المكون المخصص

    setupComponents(args, component) {

        const store = getOwner(this).lookup("service:store");

        return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
        // أسطر مأخوذة من summary() في نموذج user.js؛ محاولة العثور على اسم المستخدم لملف تعريف المستخدم الذي نعرضه حتى نتمكن من الوصول إلى json للمواضيع التي أنشأوها

            let characterList = [];
            // مصفوفة فارغة لدفع المواضيع إليها

            result.topic_list.topics.forEach.category_id(4)(function(topic){
            // مواضيع فقط من الفئة المحددة التي نريدها

            // حوالي هنا كان لدى درس كريس بعض الأسطر لربط المستخدمين بالموضوع. تجاهلته لأنني لا أحتاج إلى المستخدمين بخلاف المنشئ الأصلي للعرض مع الموضوع. هل هذا مهم؟
            //topic.posters.forEach(function(poster){
                //poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
              //});

                characterList.push(Topic.create(topic));
                // إضافة المواضيع إلى قائمة المواضيع

            });

            component.set('characterList', characterList);
            // إعداد مكوننا بالمواضيع من المصفوفة

        }); // نهاية ajax


    } // نهاية setupComponents

  });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">

      <div class="custom-character-list-wrapper">
        {{topic-list topics=characterList showPosters=false}}
      </div>

</script>