قوائم المواضيع المفلترة

:information_source: ملخص يسمح بإنشاء قوائم مواضيع مخصصة باستخدام عوامل التصفية. ثم يمكن عرض القوائم في منفذ المكون الإضافي المحدد للصفحات المحددة.
:eyeglasses: معاينة Theme Creator
: hammer_and_wrench: المستودع https://github.com/gormus/discourse-filtered-topic-lists
:question: دليل التثبيت كيفية تثبيت سمة أو مكون سمة
:open_book: جديد على سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

تثبيت مكون السمة هذا

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

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

تأكد من مراجعة ميزة تصفية قائمة المواضيع التجريبية، وعوامل التصفية المدعومة:

الإعدادات

  • العنوان: نص عنوان اختياري؛ عند توفيره يتم عرضه فوق قائمة المواضيع.

  • الطول: عدد المواضيع المراد عرضها.

  • الاستعلام: الاستعلام لتصفية القائمة

  • منفذ المكون الإضافي: يمكن وضع قوائم المواضيع المنسقة في منافذ/مناطق المكونات الإضافية التالية:

    • below-site-header
    • above-main-container
    • before-topic-list
    • after-topic-list
    • topic-list-bottom
    • main-outlet-bottom
    • before-main-outlet
  • العرض في: الصفحة التي سيتم عرض القائمة عليها.

    • everywhere: العرض في كل صفحة، باستثناء صفحات /admin.
    • homepage
    • top_menu: تحقق من إعدادات top menu، للصفحات الممكّنة.
    • categories: صفحة /categories.
    • latest: صفحة /latest.
    • top
    • new
    • unread
    • read
    • posted
    • bookmarks
    • hot
    • selected_categories:
    • selected_tags
  • الفئات المحددة: عندما يتم تعيين الإعداد “العرض في” إلى selected_categories، يتم استخدام الفئات المحددة في هذا الحقل. سيتم عرض قائمة المواضيع في صفحات الفئات هذه فقط.

  • العلامات المحددة: عندما يتم تعيين الإعداد “العرض في” إلى selected_tags، يتم استخدام العلامات المحددة في هذا الحقل. سيتم عرض قائمة المواضيع في صفحات العلامات هذه فقط.

منافذ المكونات الإضافية

يتم عرض جميع منافذ المكونات الإضافية المتاحة بخط متقطع أحمر حولها.

الإلهام

لقد استلهمت من مكون السمة “القوائم المميزة”. ولكن في النهاية، احتجت إلى حل أقل تقييدًا وأكثر مرونة لمشروعي.

تأكد من الاطلاع عليه:

23 إعجابًا

هذا رائع جداً

هل يستخدم نفس الفئات المستهدفة حتى تتمكن من تنسيق المكون الخاص بك؟

هل يمكنك إضافة عينتين من قوائم مخصصة في بعض المنافذ؟

شكرا

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

نعم، تستخدم جداول قائمة المواضيع المصفاة نفس فئات CSS مثل جدول قائمة المواضيع الرئيسي. بالإضافة إلى ذلك، توجد عناصر DIV التفافية بفئات من شأنها مساعدتك في تخصيص جداول قائمة المواضيع في أي منفذ إضافي (plugin-outlet).

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

.filtered-topics-list {
    &__wrapper {
    }

    &__header {
        h2 {
        }
    }

    &__content.topic-list {
    }
}

.filtered-topics-list {
    &.below-site-header,
    &.above-main-container,
    &.before-topic-list,
    &.after-topic-list,
    &.topic-list-bottom,
    &.main-outlet-bottom,
    &.before-main-outlet {

        &__wrapper {
        }

        &__header {
            h2 {
            }
        }

        &__content.topic-list {
        }
    }
}

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

يرجى تجاهل الخطوط المتقطعة الحمراء حولها، لقد أضفتها فقط لتسليط الضوء على الجداول والمناطق التي توجد فيها.

إعجابَين (2)

أنا أستخدم /latest كالصفحة الرئيسية. لقد أضفت أحدث المواضيع من فئات معينة إلى صفحتي الرئيسية باستخدام هذا المكون، ولكني أرغب في إزالة مكون أحدث المواضيع القياسي والمتجدد بلا حدود في Discourse. لقد فعلت ذلك باستخدام CSS، ولكنه يؤثر على الصفحات الأخرى أيضًا. هل من الممكن استهداف مكون أحدث المواضيع بمحددات CSS للصفحة الرئيسية فقط؟

3 إعجابات

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

https://gitlab.com/manuelkostka/discourse/helpers/css-classes/-/blob/main/javascripts/discourse/api-initializers/css-classes.js?ref_type=heads

3 إعجابات

تم العثور على خطأ (أو سلوك متوقع؟):

تعيين Default List Filter: no subcategories في فئة يمنع عرض أي قوائم مواضيع مفلترة في أي من المنافذ.

تم الاختبار على أحدث إصدار مستقر 3.3.1.

3 إعجابات

مرحباً @jrgong هل يمكنك مشاركة لقطة شاشة للإعداد المسبق الخاص بك؟

إعجابَين (2)

أرسلت لك رسالة خاصة بالإعداد المسبق الخاص بي

سؤال آخر: ما هي أفضل طريقة لإخفاء قائمة الموضوعات الأساسية عند عرض القائمة المفلترة في فئة معينة؟
الطريقة الوحيدة التي وجدتها عبر CSS هي استهداف علامة span، ولكن قد يتم تشغيلها في مناسبات مختلفة:

span + table.topic-list.topic-thumbnails-grid {
  display: none;
}

مرحباً @jrgong يمكنني تأكيد نتائجك.

خطوات التكرار:

  1. إنشاء فئة وفئة فرعية. أي Top Level Category و Top Level Category > Sub Category
  2. تعديل إعدادات Top Level Category (/c/top-level-category/edit/settings)
  3. تحت المظهر، ابحث عن إعداد Default List Filter.
  4. قم بتغيير القيمة من all topics إلى no subcategories
  5. قم بتكوين إعداد مسبق جديد في مكون Filtered Topics Lists لسرد محتواه في كلتا الفئتين العليا والفرعية؛
    1. قم بتعيين Show on = selected_categories
    2. قم بتعيين Selected categories = Top Level Category, Sub Category
    3. قم بتعيين Plugin Outlet = (any)
  6. عرض صفحات كل فئة

ما هو المتوقع؟

عرض كلتا صفحة الفئة لنتائج الإعداد المسبق المكونة في منفذ المكون المحدد.

ما تم العثور عليه؟

  1. أي فئة مع إعداد Default List Filter = no subcategories، لا تعرض Filtered Topics Lists؛ سواء كانت تحتوي على أي فئات فرعية أم لا.
  2. ومع ذلك، إذا تم تعيين Show on = everywhere، يتم عرض Filtered Topics List في المنفذ المحدد.

مشاكل مماثلة:

إعجابَين (2)

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

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

وظائف المكون الإضافي رائعة! :+1:

س: Plugin Outlet : before-main-outlet

كيف نجعل هذا يظهر، لا أراه. هل أحتاج إلى تمكين/تعطيل شيء ما في السمة القياسية ليحتل الجانب الأيمن من الشاشة وفقًا لـ layton gfx؟

حسناً، لقد وجدته أو على الأقل لمحته لفترة وجيزة، حيث يظهر في أسفل التمرير اللانهائي، وليس على الجانب الأيمن كما كان متوقعًا أو متوقعًا من الدليل المرئي.