هل الترقيم الصفحات مستحيل أم أنه مجرد صعب؟

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

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

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

إعجابَين (2)

ليس التطوير نقطة قوتي، ولكن أعتقد أن هناك صفحات بالفعل إذا كان بإمكانك الاستفادة منها؟

على سبيل المثال. https://meta.discourse.org/t/introducing-discourse-chat-beta/210734/?page=6

إعجابَين (2)

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

من غير المرجح أن تكون المشكلة تقنية، فالتخصيص ممكن في أي وقت تقريبًا، بل هو عملي واقتصادي.

إذا كنت لا تزال مهتمًا: جربها وأخبرني إذا كنت مخطئًا!

بدلاً من ذلك، لماذا لا تسلك الطريق الأسهل باستخدام منتدى يعتمد على الصفحات، فهناك الكثير منها؟

3 إعجابات

تقصد أن تطبيق الدردشة يستخدم صفحات؟ عذرًا، لا أعتقد أنني أفهم.

لا، أعتقد أنني أفسدتها. :slight_smile:
يمكنك إلحاق ?page=2 في ظل ظروف معينة، ولكن يبدو أنني نسيت بالضبط كيف يعمل ذلك. :slight_smile:

إعجابَين (2)

على حد علمي، تعمل هذه المعلمة فقط للصفحات التي نقدمها للزواحف والمتصفحات القديمة غير المدعومة.

4 إعجابات

هؤلاء هم نفس المستخدمين الذين يشعرون بالضيق لأنهم لا يستطيعون استخدام أجهزة Commodore 64 الخاصة بهم. أخبرهم أنك آسف جدًا وأنك تعمل بجد على المشكلة ولا تفعل شيئًا. التمرير اللانهائي هو المعيار الصناعي منذ عقد على الأقل.

أو، قد تحاول دفعهم إلى توضيح سبب اعتقادهم أنهم يريدون ذلك (حتى يتمكنوا من الارتباط بمكان معين في الموضوع، ربما؟) وإثبات أنه يمكنك الآن الارتباط بمنشور معين وليس “رؤية المنشور السادس في هذه الصفحة”. لكنهم سيظلون غير راضين تمامًا لأنه ليس بالضبط كما كان قبل عقد من الزمان.

7 إعجابات

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

كما أشار @pfaffman، فإن الحل القائم على الاتصال أسهل على الأرجح من الحل التقني.

لدي شعور بأن معظم هؤلاء المستخدمين سيعتادون عليه ببساطة. أردت فقط استكشاف خيارات مختلفة إذا لم يفعلوا ذلك.

ما زلت منفتحًا على المزيد من التعليقات حول مدى جدوى (أو عدم جدوى) هذه المهمة من أي شخص آخر.

إعجابَين (2)

ستكلف عملية التطوير ما يزيد عن 10 آلاف دولار، وربما تصل إلى 50 ألف دولار. ربما يمكنك أن تطلب من مجتمعك العثور على هذه الأموال؟ أوه، وأن تعطيك 5 آلاف دولار سنويًا للصيانة .. تحويل مشروع مجاني مفتوح المصدر إلى كابوس مكلف.

لا أرى فائدة “الترقيم” كثيرًا نظرًا لأنه يمكنك الارتباط مباشرة بفئة أو موضوع أو مشاركة؟

5 إعجابات

أعتقد أن مكونًا “هجينًا” قد يكون عمليًا إلى حد ما.

كل N مشاركة في موضوع، تقوم بإدراج “فاصل صفحات”.

المشاركة 1
المشاركة 2
...
المشاركة 15

[*الصفحة 1*] [الصفحة 2] [الصفحة 3] [الصفحة 4]

المشاركة 16

...

إن إلغاء التمرير اللانهائي في Discourse ليس تمرينًا عمليًا، ولكن مكونًا يجعل فاصل صفحات “هجينًا” (حتى مع تغييرات قائمة الموضوع) من المحتمل أن يكون في نطاق 2000-5000.

إعجابَين (2)

سام، رسالتك تذكرني بـ https://meta.discourse.org/t/natural-breakpoints-or-chapters-for-long-topics/16461؛ سأكون فضوليًا جدًا لرؤية نتيجة شيء كهذا. ويمكن أن يكون بديلاً جيدًا لأولئك الذين يفتقدون ترقيم الصفحات. غالبًا ما يبدو أنهم يفتقدون ترقيم الصفحات لأن الصفحات هي نقاط توقف لا أكثر.

3 إعجابات

@piffy

@ghassan يقوم حاليًا (أو مؤخرًا) بتطوير إضافة ترقيم الصفحات:

يبدو أن هذه طريقة لربط مواضيع منفصلة بدلاً من إضافة تنقل للصفحات إلى موضوع واحد


لقد أحرزت بعض التقدم في ترقيم الصفحات. كانت الفكرة هي استخدام وظيفة ?page=x المضمنة في discourse للتنقل بين “الصفحات” وحظر تحميل المزيد من الرسائل عن طريق تجاوز وظائف تدفق المنشورات التي تقوم بتحميل الدفعة التالية من المنشورات.

انظر أدناه لمزيد من التفاصيل (ومشكلة لم يتم حلها)

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

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

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

3 إعجابات

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

أعيد استخدام " الرد كموضوع مرتبط" ثم أقوم بتنسيق الروابط باستخدام CSS على النحو التالي…

وأضيف بعض CSS في إعدادات السمة…

CSS بسيط للأزرار فقط
.post-links-container {
    margin-left: var(--topic-body-width-padding);
    position: absolute;
    top: 37px;
    right: 30px;
}

.post-links-container ul li .d-icon {
    display: none;
}

.post-links-container .post-links {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
}

.post-links-container .post-links li:last-of-type {
    margin-bottom: 0;
}

.post-links-container ul li a[href] {
    align-items: center;
    border: 1px solid var(--primary-low-mid);
    background: var(--primary-very-low);
    border-bottom-width: 2px;
    border-radius: 3px;
    box-sizing: border-box;
    color: #009a49;
    display: inline-flex;
    font-family: monospace, monospace;
    font-size: var(--font-down-1);
    justify-content: center;
    line-height: var(--line-height-large);
    margin: 0 0.15em;
    min-width: 24px;
    padding: 0.15em 0.6em;
}

.post-links-container ul li a::after {
    content: " ->>";
    padding-left: 0.15em;
}

kbd {
    align-items: center;
    border: 1px solid var(--primary-low-mid);
    background: var(--primary-very-low);
    border-bottom-width: 2px;
    border-radius: 3px;
    box-sizing: border-box;
    color: var(--primary);
    display: inline-flex;
    font-family: monospace, monospace;
    font-size: var(--font-down-1);
    justify-content: center;
    line-height: var(--line-height-large);
    margin: 0 0.15em;
    min-width: 24px;
    padding: 0.15em 0.6em;
}

kbd a {
    padding: 0;
}

kbd a::before {
    content: "<<-";
    padding-right: 0.15em;
}

التعليمات و CSS الكامل الذي أستخدمه

/** أزرار السابق والتالي للكتب أو تسلسل المواضيع الأخرى - هذه الميزة مبنية عن طريق إعادة استخدام ** /
/**   محدد ميزة Discourse الأصلي "الرد كموضوع مرتبط" في المنشئ (أعلى اليسار). ** /
/** لإعداد هذا على Discourse الخاص بك ** /
/** الصق <kbd>%{postLink}</kbd> في /admin/customize/site_texts/js.post.continue_discussion. ** /
/** ثم قم بإنشاء فئتين: كتب (لتسلسلات مواضيع نمط المدونة) وقصص (لتسلسلات مواضيع نمط الموضوع العادي). ** /
/** قم بتثبيت مكون السمة https://meta.discourse.org/t/blog-post-styling/110841 ** /
/** في إعدادات مكون سمة نمط منشور المدونة، قم بتعيين فئة الكتب (ولكن ليس القصص) كفئة مدونة. ** /
/** ثم قم بإنشاء علامة: كتاب وقم بتعيينها كعلامة مدونة في إعدادات مكون سمة نمط منشور المدونة ** /
/** ثم لا تنس لصق CSS أدناه! يذهب في رأس السمة الخاص بك. ** /
/** بالطبع، ستحتاج CSS هنا إلى تعديل لتعمل بشكل صحيح في السمات الأخرى. ** /
/** الآن يمكنك إنشاء تسلسلات من المواضيع في فئة القصص التي ستحتوي على أزرار التنقل، ** /
/**   ولكن هذه المواضيع ستظهر بخلاف ذلك في نمط الموضوع العادي). ** /
/** إذا كان بإمكانك إضافة نمط المدونة إلى مواضيع فئة القصص هذه عن طريق إضافة علامة الكتاب ببساطة. ** /
/** موضوع جديد تقوم بتأليفه في فئة الكتب باستخدام "الرد كموضوع مرتبط" سيحتوي بالفعل على كل من أزرار التنقل ** /
/**   بالإضافة إلى نمط المدونة. ** /
/** شاهد عرضًا توضيحيًا على https://meta.discourse.org/t/is-pagination-impossible-or-just-hard/231838/16 ** /


.tag-book,
.category-books {
    aside.sidebar,
    .topic-meta-data,
    .tag-book .topic-category .badge-wrapper,
    .category-books .topic-category .badge-wrapper {
    display:none !important;

    }
}

.tag-book .container.posts,
.category-books .container.posts {
    justify-content: unset;
    justify-items: unset;
    padding-left: 0;
    display: block;
}

.tag-book .container.posts .topic-post .row,
.category-books .container.posts .topic-post .row {
    display: block;
    justify-content: center;
}

.tag-book #topic-title .title-wrapper,
.category-books #topic-title .title-wrapper {
    display: block;
    margin: 0 auto;
}

.tag-book #topic-title,
.category-books #topic-title {
    display: block;
    margin: 0 auto;
}

.tag-book #topic-title h1,
.category-books #topic-title h1 {
    font-size: 2em;
    padding-right: 20px;
}

.tag-book #post_1 .topic-body,
.category-books #post_1 .topic-body {
    padding-top: 1em;
    border-top: none;
    max-width: 100%;
}

.tag-book #post_1 .topic-body .contents,
.category-books #post_1 .topic-body .contents {
    border-top: none;
    margin-left: 0;
    padding: 0;
}

.tag-book p,
.category-books p {
    /* ضع الأنماط هنا للنص الرئيسي في صفحات الكتاب */
}

/* ضع زر التقديم في أعلى يمين الصفحة */
.tag-book .post-links-container,
.category-books .post-links-container {
    margin-left: var(--topic-body-width-padding);
    position: absolute;
    top: 1em;
    right: 30px;
}

/* ضع زر الرجوع في أعلى يسار الصفحة */
.category-stories .post-links-container {
    margin-left: var(--topic-body-width-padding);
    position: absolute;
    top: 2.5em;
    right: 30px;
}

/* إزالة رمز الرابط من زر التقديم */
.tag-book .post-links-container ul li .d-icon,
.category-books .post-links-container ul li .d-icon,
.category-stories .post-links-container ul li .d-icon {
    display: none;
}

.tag-book .post-links-container .post-links,
.category-books .post-links-container .post-links,
.category-stories .post-links-container .post-links {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
}

.tag-book .post-links-container .post-links li:last-of-type,
.category-books .post-links-container .post-links li:last-of-type,
.category-stories .post-links-container .post-links li:last-of-type {
    margin-bottom: 0;
}

/* تنسيق زر التالي/التقديم */
.tag-book .post-links-container ul li a[href],
.category-books .post-links-container ul li a[href],
.category-stories .post-links-container ul li a[href] {
    align-items: center;
    border: 1px solid var(--primary-low-mid);
    background: var(--primary-very-low);
    border-bottom-width: 2px;
    border-radius: 3px;
    box-sizing: border-box;
    color: #009a49;
    display: inline-flex;
    font-family: monospace, monospace;
    font-size: var(--font-down-1);
    justify-content: center;
    line-height: var(--line-height-large);
    margin: 0 0.15em;
    min-width: 24px;
    padding: 0.15em 0.6em;
}

/* إضافة أسهم تشير إلى اليمين لزر التقديم */
.tag-book .post-links-container ul li a::after,
.category-books .post-links-container ul li a::after,
.category-stories .post-links-container ul li a::after {
    content: " ->>";
    padding-left: 0.15em;
}

/* بدلاً من ذلك استخدم صورة للسهم الأيمن */
/*
.tag-book .post-links-container::after,
.category-books .post-links-container::after,
.category-stories .post-links-container::after {
    content: url('../../media/arrow-right.svg');
    display: inline-block;
    width: 12px;
    height: 12px;
}
*/

/* تنسيق زر الرجوع/السابق */
.tag-book kbd,
.category-books kbd,
.category-stories kbd {
    align-items: center;
    border: 1px solid var(--primary-low-mid);
    background: var(--primary-very-low);
    border-bottom-width: 2px;
    border-radius: 3px;
    box-sizing: border-box;
    color: var(--primary);
    display: inline-flex;
    font-size: var(--font-down-1);
    justify-content: center;
    line-height: var(--line-height-large);
    margin: 0;
    min-width: 24px;
    padding: 0.15em 0.6em;
}

.tag-book kbd a,
.category-books kbd a,
.category-stories kbd a {
    padding: 0;
}

/* إضافة أسهم إلى زر الرجوع */
.tag-book kbd a::before,
.category-books kbd a::before,
.category-stories kbd a::before {
    content: "<<-";
    padding-right: 0.15em;
}

/* بدلاً من ذلك استخدم صورة للسهم الأيسر */
/*
.tag-book kbd a::before,
.category-books kbd a::before,
.category-stories kbd a::before {
    content: url('../../media/arrow-left.svg');
    display: inline-block;
    width: 12px;
    height: 12px;
}
*/


هذه هي النتيجة …

يمكنك اختباره مباشرة هنا …

4 إعجابات

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

4 إعجابات

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

هل وصلت إلى أي مكان بهذا يا @piffy؟

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

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

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

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

إعجابَين (2)

إعلان رائع، لكن هذا النسخ من تويتر لا علاقة له بـ Discourse وهو مثال سيء لتقسيم الصفحات (أي الصفحات طويلة وغير مستقرة)

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

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

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

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