ترتيب الفئات حسب عدد المواضيع

أتساءل عما إذا كان هناك أي تفكير في فرز ترتيب الفئات على الصفحة الرئيسية حسب عدد المواضيع؟

مثال

الفئة أ بها 100 موضوع
الفئة ب بها 50 موضوعًا
الفئة ج بها 20 موضوعًا.

الترتيب على الصفحة الرئيسية سيكون ABC. إذا تغير C فجأة إلى 120 موضوعًا، فسيكون الترتيب CAB.

هل سيكون ذلك قابلاً للتحقيق بشكل معقول؟ هل يمكن تحقيق التباطؤ بحيث لا تتحرك الفئات كثيرًا؟

مرحباً،

يمكنني إنشاء مكون صغير إذا كنت مهتمًا. للتأكد، هل تتحدث عن صفحة الفئات (/categories

هذا عرض كريم. ومع ذلك، من جانبنا، هذا ليس ضروريًا بما يكفي للشراء كمكون سمة. أعتقد أنه لا يزال سيكون ميزة لطيفة في Discourse بشكل عام. أشعر أنه سيكون توازنًا لطيفًا بين الترتيب الحالي حسب الأحدث (الذي يغير الترتيب كثيرًا جدًا) والتخطيط الثابت تمامًا.

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

لا، لا، مجانًا :slight_smile:.

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

أخبرني إذا كان يعمل معك.

js

<script type="text/discourse-plugin" version="0.8">

api.onPageChange((url, title) => {
    const { defaultHomepage } = require('discourse/lib/utilities');

    if (url !== '/categories' && (url !== '/' || defaultHomepage() !== 'categories')) {
        return;
    }
    
    const desktop_category_page_style = api.container.lookup('service:site-settings').desktop_category_page_style;
    
    const sort = ({parent, nodes, selector}) => {
        if (!parent || !nodes.length) {
            return
        }

        Array.from(nodes).sort((a, b) => {
            const valueA = a.querySelector(selector).textContent;
            const valueB = b.querySelector(selector).textContent;
            
            return valueB - valueA;
            
        })
        .forEach(row => parent.appendChild(row));
    }
    
    if (desktop_category_page_style.startsWith('categories')) {
        const parent = document.querySelector('.category-list tbody[aria-labelledby="categories-only-category"]');
        
        sort({
            parent: parent, 
            nodes: parent?.querySelectorAll('tr'), 
            selector: 'td.topics span.value'
        })
    }
    else if (desktop_category_page_style === 'subcategories_with_featured_topics') {
        const childs = document.querySelectorAll('table.category-list');
        
        sort({
            parent: childs[0]?.parentElement, 
            nodes: childs, 
            selector: 'th.parent-category span.value'
        })

    } else {
        // boxes doesn't have a count displayed
    }
});
</script>