Ho recentemente effettuato il passaggio a Discourse e la mia community è divisa sul fatto che apprezzi o meno lo scorrimento infinito. Ad alcuni utenti piace, ad altri non importa, alcuni lo trattano come una minaccia esistenziale per la community. Sulla base di altre discussioni che ho letto qui, sembra che sia un punto di contesa comune.
Capisco che gli sviluppatori di questo software non abbiano intenzione di fornire la paginazione come opzione. Posso rispettarlo. A questo punto, ho scritto alcuni plugin e layout e ho esaminato un po’ il codice nel core di GitHub, quindi ho una conoscenza di base del software. Mi chiedo solo quanto sarebbe difficile scrivere un plugin per la paginazione se la mia community continuasse a resistere? È probabile che dovrò riscrivere gran parte del codice ruby di base? È qualcosa che può essere inserito sopra tutto il codice esistente e che potrebbe funzionare senza problemi? La struttura del database è davvero mal progettata per le query in modo paginato?
Volevo solo avere un’idea della fattibilità di intraprendere questo compito da parte delle persone più familiari con il codice.
Penso che il problema principale che avresti sarebbe il costante onere di mantenere un plugin che si rompeva molto regolarmente, poiché dovresti sovrascrivere molte delle interfacce utente per le quali anche piccole modifiche nel core potrebbero causare problemi.
Il problema è improbabile che sia tecnico, quasi ogni personalizzazione in qualsiasi momento è possibile, più che altro pratico, economico.
Se sei ancora interessato: provalo e fammi sapere se mi sbaglio!
In alternativa, perché non prendere la strada più facile di utilizzare un forum basato su pagine, ce ne sono molti?
Questi sono gli stessi utenti che si lamentano di non poter usare i loro Commodore 64. Dì loro che ti dispiace molto e che stai lavorando sodo sul problema e non fare nulla. Lo scorrimento infinito è uno standard industriale da almeno un decennio.
Oppure, potresti provare a far dire loro perché pensano di volerlo (in modo che possano collegarsi a un punto particolare dell’argomento, forse?) e dimostrare che ora puoi collegarti a un post specifico e non “vedere il sesto post in questa pagina”. Ma saranno comunque molto infelici che non sia esattamente come era un decennio fa.
Penso che il tuo punto qui sia molto forte. In definitiva, questo plugin ci costringerebbe a non aggiornare mai o sarebbe un compito che non finisce mai.
Come implica @pfaffman, la soluzione basata sulla comunicazione è probabilmente più facile di una tecnica.
Ho la sensazione che la maggior parte di questi utenti si abituerà. Volevo solo esplorare diverse opzioni nel caso in cui non lo facessero.
Sono ancora aperto a ulteriori feedback su quanto sia (ir)fattibile questo compito da parte di chiunque altro.
Lo sviluppo costerebbe da $10.000 in su, forse fino a $50.000. Forse potresti chiedere alla tua community di trovare quei fondi? Oh, e darti $5.000 all’anno per la manutenzione… trasformando un progetto open-source gratuito in un incubo costoso.
Non vedo molto il vantaggio del “paging” dato che puoi collegarti direttamente a una Categoria, un Argomento o un Post?
Penso che un componente “ibrido” possa essere alquanto pratico.
Ogni N post in un argomento inserisci un “paginatore”.
Post 1
Post 2
...
Post 15
[*Pagina 1*] [Pagina 2] [Pagina 3] [Pagina 4]
Post 16
...
La rimozione dello scorrimento infinito di Discourse non è un esercizio pratico, ma un componente che realizza un paginatore “ibrido” (anche con modifiche all’elenco degli argomenti) è probabilmente nell’intervallo 2k-5k.
Sam, il tuo messaggio mi ricorda Natural breakpoints or "chapters" for long topics?; sarei molto curioso di vedere il risultato di qualcosa del genere. E potrebbe essere una buona alternativa per coloro a cui manca la paginazione. Spesso sembra che manchi la paginazione perché le pagine sono punti di interruzione e nient’altro.
Questo sembra essere un modo per collegare argomenti separati anziché aggiungere la navigazione di pagina a un singolo argomento
Ho fatto un po’ di progressi sulla paginazione. L’idea era di utilizzare la funzione ?page=x integrata in Discourse per navigare tra le “pagine” e fondamentalmente bloccare il caricamento di ulteriori messaggi sovrascrivendo le funzioni del post-stream che caricano il batch successivo di post.
Vedi sotto per maggiori dettagli (e problemi irrisolti)
Ho aggiunto pulsanti di paginazione in alto e in basso a ciascun argomento. Una cosa che non ho ancora capito è come ottenere il numero totale di pagine in un argomento, in modo da sapere quanti pulsanti visualizzare. È facile dal backend, ma preferirei che questo fosse un componente del tema anziché un plugin, quindi le opzioni su come farlo sono più limitate.
Con queste due cose, sembra che sarebbe un sistema di paginazione per lo più funzionale. Sono sicuro che ci saranno alcuni comportamenti strani che richiederanno rifiniture, come se i post eliminati contassero come un messaggio in una pagina o il controllo di quanti post dovrebbero essere visualizzati quando si salta all’ultima pagina.
Sono tornato periodicamente a questo problema. Non sono sicuro se raggiungerò mai una soluzione pulita, ma penso che potrebbe esistere una soluzione “hacky” e per lo più funzionale.
Per creare una navigazione da un argomento all’altro (e inserire automaticamente i pulsanti Indietro/Precedente e Avanti/Successivo su ciascun argomento della sequenza), sto procedendo in questo modo…
Sto riutilizzando la funzione “Rispondi come argomento collegato” e poi applicando uno stile CSS ai link in questo modo…
/** Pulsanti Precedente e Successivo per Libri o altre Sequenze di Argomenti - questa funzionalità è creata riutilizzando **/\n/** il selettore nativo di Discourse "Rispondi come argomento collegato" nell'editor (in alto a sinistra). **/\n/** PER CONFIGURARE QUESTO SUL TUO DISCOURSE **/\n/** Incolla \u003ckbd\u003e%{postLink}\u003c/kbd\u003e in /admin/customize/site_texts/js.post.continue_discussion. **/\n/** Quindi crea 2 categorie: LIBRI (per sequenze di argomenti in stile blog) e STORIE (per sequenze di argomenti in stile normale). **/\n/** Installa il componente tema https://meta.discourse.org/t/blog-post-styling/110841 **/\n/** Nelle impostazioni del componente tema "Blog Post Styling", assegna la categoria LIBRI (ma non STORIE) come categoria blog. **/\n/** Quindi crea un tag: LIBRO e assegnalo come tag blog nelle impostazioni del componente tema "Blog Post Styling". **/\n/** Quindi non dimenticare di incollare il CSS qui sotto! Va nell'intestazione del tuo tema. **/\n/** Naturalmente il CSS qui dovrà essere modificato per funzionare correttamente in altri temi. **/\n/** Ora puoi creare sequenze di argomenti nella categoria STORIE che avranno i pulsanti di navigazione, **/\n/** ma quegli argomenti appariranno altrimenti nello stile normale dell'argomento). **/\n/** Se riesci ad aggiungere lo stile blog a questi argomenti della categoria STORIE semplicemente aggiungendo il tag LIBRO. **/\n/** Un nuovo argomento che componi nella CATEGORIA LIBRI utilizzando "Rispondi come argomento collegato" avrà già sia i pulsanti di navigazione **/\n/** sia lo stile blog. **/\n/** Vedi una demo su https://meta.discourse.org/t/is-pagination-impossible-or-just-hard/231838/16 **/\n\n\n\n.tag-book,\n.category-books {\n aside.sidebar,\n .topic-meta-data,\n .tag-book .topic-category .badge-wrapper,\n .category-books .topic-category .badge-wrapper {\n display:none !important;\n \n }\n}\n\n.tag-book .container.posts,\n.category-books .container.posts {\n justify-content: unset;\n justify-items: unset;\n padding-left: 0;\n display: block;\n}\n\n.tag-book .container.posts .topic-post .row,\n.category-books .container.posts .topic-post .row {\n display: block;\n justify-content: center;\n}\n\n.tag-book #topic-title .title-wrapper,\n.category-books #topic-title .title-wrapper {\n display: block;\n margin: 0 auto;\n}\n\n.tag-book #topic-title,\n.category-books #topic-title {\n display: block;\n margin: 0 auto;\n}\n\n.tag-book #topic-title h1,\n.category-books #topic-title h1 {\n font-size: 2em;\n padding-right: 20px;\n}\n\n.tag-book #post_1 .topic-body,\n.category-books #post_1 .topic-body {\n padding-top: 1em;\n border-top: none;\n max-width: 100%;\n}\n\n.tag-book #post_1 .topic-body .contents,\n.category-books #post_1 .topic-body .contents {\n border-top: none;\n margin-left: 0;\n padding: 0;\n}\n \n.tag-book p,\n.category-books p {\n /* inserisci qui gli stili per il testo principale nelle pagine del libro */\n}\n\n/* Posiziona il pulsante Avanti in alto a destra della pagina */\n.tag-book .post-links-container,\n.category-books .post-links-container {\n margin-left: var(--topic-body-width-padding);\n position: absolute;\n top: 1em;\n right: 30px;\n}\n\n/* Posiziona il pulsante Indietro in alto a sinistra della pagina */\n.category-stories .post-links-container {\n margin-left: var(--topic-body-width-padding);\n position: absolute;\n top: 2.5em;\n right: 30px;\n}\n\n/* Rimuovi il simbolo del link dal pulsante Avanti */\n.tag-book .post-links-container ul li .d-icon,\n.category-books .post-links-container ul li .d-icon,\n.category-stories .post-links-container ul li .d-icon {\n display: none;\n}\n\n.tag-book .post-links-container .post-links,\n.category-books .post-links-container .post-links,\n.category-stories .post-links-container .post-links {\n margin-top: 0;\n padding-top: 0;\n border-top: 0;\n}\n\n.tag-book .post-links-container .post-links li:last-of-type,\n.category-books .post-links-container .post-links li:last-of-type,\n.category-stories .post-links-container .post-links li:last-of-type {\n margin-bottom: 0;\n}\n\n/* Stile del pulsante Avanti/Successivo */\n.tag-book .post-links-container ul li a[href],\n.category-books .post-links-container ul li a[href],\n.category-stories .post-links-container ul li a[href] {\n align-items: center;\n border: 1px solid var(--primary-low-mid);\n background: var(--primary-very-low);\n border-bottom-width: 2px;\n border-radius: 3px;\n box-sizing: border-box;\n color: #009a49;\n display: inline-flex;\n font-family: monospace, monospace;\n font-size: var(--font-down-1);\n justify-content: center;\n line-height: var(--line-height-large);\n margin: 0 0.15em;\n min-width: 24px;\n padding: 0.15em 0.6em;\n}\n\n/* Aggiungi frecce che puntano a destra al pulsante Avanti */\n.tag-book .post-links-container ul li a::after,\n.category-books .post-links-container ul li a::after,\n.category-stories .post-links-container ul li a::after {\n content: " ->>";\n padding-left: 0.15em;\n}\n\n/* In alternativa, usa un'immagine per la freccia destra */\n/*\n.tag-book .post-links-container::after,\n.category-books .post-links-container::after,\n.category-stories .post-links-container::after {\n content: url('../../media/arrow-right.svg');\n display: inline-block;\n width: 12px;\n height: 12px;\n}\n*/\n\n/* Stile del pulsante Indietro/Precedente*/\n.tag-book kbd,\n.category-books kbd,\n.category-stories kbd {\n align-items: center;\n border: 1px solid var(--primary-low-mid);\n background: var(--primary-very-low);\n border-bottom-width: 2px;\n border-radius: 3px;\n box-sizing: border-box;\n color: var(--primary);\n display: inline-flex;\n font-size: var(--font-down-1);\n justify-content: center;\n line-height: var(--line-height-large);\n margin: 0;\n min-width: 24px;\n padding: 0.15em 0.6em;\n}\n\n.tag-book kbd a,\n.category-books kbd a,\n.category-stories kbd a {\n padding: 0;\n}\n\n/* Aggiungi frecce al pulsante Indietro */\n.tag-book kbd a::before,\n.category-books kbd a::before,\n.category-stories kbd a::before {\n content: "<<-";\n padding-right: 0.15em;\n}\n\n/* In alternativa, usa un'immagine per la freccia sinistra */\n/*\n.tag-book kbd a::before,\n.category-books kbd a::before,\n.category-stories kbd a::before {\n content: url('../../media/arrow-left.svg');\n display: inline-block;\n width: 12px;\n height: 12px;\n}\n*/\n\n\n```
Sì, penso che questo sia il modo migliore per affrontarlo. Se riesci a scoprire esattamente cosa non gli piace dello scorrimento infinito, può aiutare a indirizzare la conversazione verso qualcosa di più produttivo. Se c’è una funzionalità che gli manca, forse è facile trovarne l’equivalente, se c’è qualcosa che non funziona, forse è qualcosa che possiamo migliorare, ma se si oppongono semplicemente al cambiamento, non c’è molto da fare.
L’unica ragione a cui riesco a pensare è cercare di contare più visualizzazioni di pagina poiché gli inserzionisti potrebbero non concordare sul fatto che un caricamento a scorrimento infinito sia la stessa cosa di una visualizzazione di pagina.
Trovo che lo scorrimento infinito possa creare dipendenza. Mi piace la paginazione perché mi dà un momento per fermarmi e chiedermi se voglio continuare. Inoltre, suddivide lunghi thread di discussione in blocchi gestibili, il che trovo meno stressante e opprimente per il mio cervello.
C’è una piattaforma di microblogging post-Twitter che mi piace, che ha deciso di utilizzare la paginazione invece dello scorrimento infinito, e per me questo è stato un segnale incredibilmente chiaro che stanno cercando di adottare un approccio pro-sociale e sano ai social media.
Non sono sicuro se questo fosse il posto giusto per intervenire. Ho solo pensato che forse potrei aiutare a chiarire perché alcuni utenti potrebbero trovare importante questa funzionalità, dato che non ho davvero visto nessuno fornire questa prospettiva.
Ho usato Discourse altrove, è una buona piattaforma e apprezzo molto quanto si possa personalizzare (ad esempio, la possibilità di rimuovere i Mi piace, evvai), ma la mancanza di paginazione è probabilmente un ostacolo insormontabile per me.
Ottima pubblicità, ma questo clone di Twitter non ha nulla a che fare con Discourse ed è un cattivo esempio di paginazione (cioè, le pagine sono lunghe e instabili)
Non è del tutto impossibile. Ho creato un plugin di paginazione appropriato qualche anno fa (mi dispiace, non sarà open source). Se qualcuno ci sta provando, forse solo come progetto di apprendimento, sarei felice di esaminare il tuo codice e dirti in che direzione andare. Ma non lo consiglierei per un sito di produzione, specialmente uno di qualsiasi dimensione.
*modifica guardando un po’ di più il mio vecchio plugin, non credo che lo consiglierei nemmeno come progetto di apprendimento, a meno che tu non sia veramente appassionato. È difficile.
Non è una pubblicità, ma sarò felice di oscurare la piattaforma di cui stavo parlando se ciò distoglierà meno l’attenzione dalla prospettiva che stavo offrendo.