إخفاء جميع المواضيع "عن فئة X"

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

كيف يمكنني إخفاء كل هذه المواضيع في جميع الفئات؟

يمكنك إلغاء إدراجها ولكنك ستراها بعد ذلك لأنك مسؤول. :thinking: على الرغم من أنه يمكنك كتم المواضيع.

هل هذا ممكن باستخدام CSS؟

لست متأكدًا مما إذا كان لديهم فئة مخصصة؟

أعتقد أنني سأجرب نهج “وضع علامة عليهم جميعًا وكتم العلامة” لأنه يبدو أنه أقل جهد. (ولكن قم بإلغاء إدراجهم لصالح الآخرين)

من باب الفضول، لماذا تريد إخفاءهم عن نفسك؟

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

بدافع الفضول، لماذا تريد إخفاءها عن نفسك؟

بصراحة؟ أنا فقط لا أحب رؤيتها. إذا ذهبت إلى مدونتي… أريد فقط رؤية مدونتي أيضًا :slight_smile:

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

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

<script>
  document.addEventListener("DOMContentLoaded", function() {
    var element = document.querySelector('[data-topic-id="10"]'); // استبدل 10 بمعرف الموضوع الخاص بك
    if (element) {
      element.style.display = 'none';
    }
  });
</script>

فويلا!

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

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

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

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

آمل أن يعطي هذا المزيد من البصيرة!


تعديل: إذا كنت أفتقد قيمة في مكان ما لم أره بعد، فأشرني إليه! :rocket:

أيضًا، تعديل:

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

البحث مستمر…

أعتقد أنه إذا كنت تبحث عن إخفاء موضوع واحد فقط، فيمكنك القيام بذلك على الأرجح باستخدام CSS. لغة CSS لدي ضعيفة، لكن يمكنني رؤية معرف الموضوع (data-topic-id) هناك، لذا يمكن استهدافه؟

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

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

هناك موضوع Feature حول تغيير الإعداد الافتراضي

إعجابَين (2)

هذا تحديث يعمل بشكل مثالي لحالة الاستخدام الخاصة بي.

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

<script>
  document.addEventListener("DOMContentLoaded", function() {
    var topicIdsToHide = ["10", "20", "30"]; // أضف معرفات الموضوع الخاصة بك هنا

    function hideElementsByDataTopicIds() {
      topicIdsToHide.forEach(function(id) {
        var element = document.querySelector('[data-topic-id="' + id + '"]');
        if (element) {
          element.style.display = 'none';
        }
      });
    }

    // تشغيل الدالة مبدئيًا
    hideElementsByDataTopicIds();

    // إنشاء مراقب طفرات لمراقبة تغييرات DOM
    var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        hideElementsByDataTopicIds();
      });
    });

    // مراقبة المستند بأكمله
    observer.observe(document.body, { childList: true, subtree: true });
  });
</script>