إخفاء فئات معينة من الصفحة الرئيسية دون كتم أو كيفية الحصول على عدد الموضوعات الجديدة في فئة مكتومة

هناك العديد من المواضيع المنشورة في مجتمعي في فئة معينة.

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

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

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

لذلك أفكر في النهج 1 تاليًا، لكنني لا أعرف كيف تعمل استعلامات الصفحة الرئيسية أو كيفية إخفاء فئات معينة…

أو حتى حل للنهج 2 (كيفية الحصول على عدد الموضوعات الجديدة في الفئة المكتومة) سيكون جيدًا.

أي مساعدة ستكون موضع تقدير كبير.

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

مرحباً @Programer-D
يمكنك تجربة GitHub - keegangeorge/discourse-hide-categories: This is a theme component that allows you to hide specific categories from either the hamburger menu or category boxes.
أو طريقة CSS.

شكراً جزيلاً لك.

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

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

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

سأفكر في الأمر أكثر…

أعتقد أن هناك إضافة لإعادة إنشاء السلوك القديم “suppress”، إذا كان ذلك مفيدًا؟

شكراً جزيلاً لك.
كنت أبحث في موضوع نقاش قديم وكان هناك حديث عن إنشاء مثل هذا المكون الإضافي وكنت أحاول العثور عليه.

سأجربه في أقرب وقت ممكن.

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

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

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

أنا لست متحدثًا أصليًا باللغة الإنجليزية

ما هي لغتك الأم؟ إذا كانت روسية / أوكرانية - أهلاً بك في الرسائل الخاصة.
سأتحقق من المزيد هذا المساء بخصوص مشكلتك.

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

يمكنك أيضًا تعديل CSS لمجموعات مختلفة - على سبيل المثال، يمكن أن يكون هناك زر للانضمام إلى هذه المجموعة بسهولة.

لقد نظرت في المكون الإضافي قليلاً ولا يبدو الأمر سهلاً… نظرت داخل result = Topic::ActiveRecord ولا يبدو أنه يحتوي على أي بيانات متعلقة بالإشعارات.

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

ربما… أود أن أقوم بعمل foreach لمحتويات “result” للحصول على معلومات مفصلة حول كل موضوع، وتسجيل معرفات المواضيع فقط لتلك المواضيع التي يكون فيها notification_level هو “Tracking” أو “Watching” وتخزينها في القائمة، وإضافة إلى عبارة where "OR أتخيل أنها ستعمل بشكل جيد إذا استخدمت topics.topic_id IN (#{topic_ids.join(',')\". أعرف أن هذا ليس رمزًا جميلًا جدًا، ولست على دراية بـ Ruby، لذلك لست متأكدًا مما إذا كان سيعمل…

سأذهب للبحث عن طريقة لاستدعاء Topic حسب المعرف من Ruby.

شكراً جزيلاً لك.
لم أفكر في استخدام المجموعات… ولكن إذا لم ينجح تعديل المكون الحالي، فسوف أفكر في الأمر.

لا أفهم كل شيء على الإطلاق بشكل صحيح، ولكن بطريقة ما نجح الأمر.

في حال أراد أي شخص آخر القيام بنفس الشيء، سأتركه هنا.

السطر 17 من plugin.rb للمكون الإضافي الذي علمني إياه JammyDodger.

result.where("topics.category_id NOT IN (#{category_ids.join(\",\")})")

إلى

result.where("topics.category_id NOT IN (#{category_ids.join(\",\")}) OR tu.notification_level IN (2,3)")

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

لست متأكدًا بنسبة 100٪ مما إذا كنت أتبع هذا، ولكن إذا قمت بكتم صوت فئة بشكل افتراضي من إعداد المسؤول “الفئات المكتومة افتراضيًا”، فيبدو أن هذا يفعل شيئًا مشابهًا؟ لن تظهر المواضيع في قائمة الأحدث، ولكنها ستكون مرئية إذا انتقلت إلى صفحة الفئة. وإذا تفاعل مستخدم مع أحدها ليصبح تتبعًا أو مشاهدة، فإن هذه المواضيع تظهر في قوائم المواضيع الخاصة به.

هل هذا ما تبحث عنه؟

كان كتم الصوت يلبي المتطلبات تقريبًا، ولكن كانت هناك مشكلة واحدة: لم يعد يتلقى مواضيع جديدة.

لقد أنشأت مكونًا للحصول على عدد هذه المواضيع، ولكني لاحظت أن كتم الصوت لا يحصل على المواضيع الجديدة، لذلك لم أتمكن من الحصول على عدد المواضيع الجديدة.

لهذا السبب كنت أبحث عن طريقة لمنعه من الظهور في الصفحة الرئيسية مع إعداد الإشعارات “عادي”.

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

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

إعجابَين (2)

أوه، أعتقد أنني فهمت الآن. يسعدني أنك وجدت حلاً يناسبك. :+1::slightly_smiling_face: