Come si recuperano i dati dal DB per i componenti del tema?

Qualcuno sa se esiste una guida o un esempio per questo da qualche parte, per favore?

Immaginiamo di utilizzare un componente del tema per creare una colonna laterale: come posso elencare i 20 argomenti pubblici più recenti (o, se è più semplice, quelli delle categorie specificate nella query) in quella colonna laterale/componente del tema?

Ci sono un paio di modi per farlo. Il più semplice è utilizzare una chiamata AJAX all’endpoint dell’API Rails che fornisce i dati che desideri visualizzare. Se vuoi gli ultimi 20 argomenti, potresti provare /latest.json.

La sfida sorge se devi combinare informazioni da più endpoint: in tal caso, devi attendere il completamento di più chiamate, il che può rallentare significativamente le prestazioni nel componente del tema.

Grazie per la risposta, Justin :slight_smile:

C’è un modo semplice per riutilizzare semplicemente i feed/dati che Discourse fornisce già? (In modo che rispettino anche le impostazioni dell’utente).

Ad esempio, in una colonna laterale potremmo avere:

  • Gli ultimi 10 argomenti (feed dalla pagina Ultime, ma che rispetta anche le categorie silenziate)
  • Gli argomenti più popolari questa settimana (da /top)
  • Gli argomenti più popolari questo mese
  • Gli argomenti più popolari quest’anno
  • Gli utenti più attivi questo mese (da /u?period=monthly)

In realtà, su altre piattaforme forum questo è abbastanza semplice da fare e mi manca molto su Discourse :sob:

Assolutamente. Effettuare le chiamate Ajax agli endpoint associati rispetterà le impostazioni attuali dell’utente.

L’accesso a /latest.json mostrerà solo gli ultimi argomenti che quell’utente specifico può vedere.

Effettua una richiesta GET dagli stessi percorsi aggiungendo .json all’URL e vedi cosa trovi!

Pensi che sarebbe più o meno lo stesso che interrogare direttamente il database con le query eseguite da quegli endpoint? (O utilizzerebbe significativamente più risorse, come se dovessi caricare 5 pagine aggiuntive, una per ogni endpoint).

In ogni caso, mi farebbe molto piacere sperimentare: ci sono guide o tutorial che mostrano come recuperare dati da un endpoint in un componente del tema? (O sarebbe meglio/più efficiente creare un plugin invece?)

Sapere come creare un componente del tema e un plugin ‘fittizio’, ma non ho trovato guide che mostrino come recuperare dati dal database in essi.

https://meta.discourse.org/t/how-to-add-a-featured-topic-list-to-your-discourse-homepage/132949

Questa guida mostra come farlo con un tag specifico, ma puoi replicare questo approccio con qualsiasi endpoint in realtà.