تحقيق نفس انتقال الصفحة الباهت كما في NodeBB؟

مرحبًا.
شيء واحد أفضل في NodeBB مقارنة بـ Discourse هو تأثير انتقال الصفحة.
الفرق الرئيسي هو أنه في Discourse، يتم حذف محتوى HTML فور النقر على رابط، بينما في NodeBB، يُحتفظ بالمحتوى حتى يصبح المحتوى الجديد جاهزًا للعرض، مما يسمح بتأثير تلاشي جميل على المحتوى أثناء تحميل الصفحة التالية.

هل من الممكن إجراء مثل هذا التعديل؟ وهل سيتطلب ذلك برمجة مكثفة؟

نعجبنا الفكرة! :bulb: :heart: (لكن بصراحة، قد تصبح مزعجة بسرعة؟ :wink: )

نعم، يمكن تنفيذ ذلك.

إحدى الطرق هي تجاوز مكون قائمة المواضيع (Topic List Component) على النحو التالي:

api.modifyClass('component:topic-list',  {
        @on('init')
        setup() {
           $("#list-area").fadeOut(0);
        },  
        @on('didRender')
        completeRender(){
          $("#list-area").fadeIn(600);
        }
    }
)

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

أنا على وشك إضافة هذا كخيار إضافي في TLP :smiley:

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

سأجرب هذا، شكرًا لك!

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

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

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

بالطبع لا يقرأ المستقبل :rocket:. يبدو أن مدة التلاشي في NodeBB حوالي 200 ميلي ثانية. إذا استغرقت الصفحة وقتًا أطول للتحميل، فسوف تواجه شاشة فارغة.

ونعم، أنت محق، الفكرة هي في الأساس استبدال مؤشر التحميل بتلاشي لمدة ثابتة. :blush:
إذا كان وقت التحميل أسرع من مدة التلاشي، فيجب إيقاف التلاشي للسماح بعرض المحتوى الجديد.

البرمجة ليست مهارتي الأساسية، ولا أعرف كيف يعمل Discourse، لذا لست متأكدًا من أنني سأتمكن من فهمه، لكن الأمر يستحق المحاولة.

شكرًا لنصائحك واقتراحاتك!