كيفية تطبيق ترتيب وسوم مخصص

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

3 إعجابات

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

بعد ذلك، باستخدام مقتطف رمز الرأس من محرر السمة، قمت بحقن النص البرمجي التالي في DOM.

سمح لي هذا بإعادة ترتيب العلامات ديناميكيًا. بينما هو “اختراق” في الوقت الحالي، إلا أنه يعمل على الأقل.

<script type="text/discourse-plugin" version="0.8">
  api.addTagsHtmlCallback(function(topic, params) {
    const containers = document.querySelectorAll(".discourse-tags");
    for (const container of containers) {
      const children = Array.from(container.children);

      children.sort((a, b) => {
        const orderA = parseInt(a.getAttribute("title"));
        const orderB = parseInt(b.getAttribute("title"));
        return orderA - orderB;
      });

      children.forEach(child => container.appendChild(child));
    }
  }, {priority: 100});
</script>