Recuperare argomenti basati su campo personalizzato?

AGGIORNAMENTO: Penso di averlo (quasi) funzionante (!). Ora, questo mostrerà gli argomenti “più recenti” che corrispondono al valore del campo personalizzato. (Il metodo #latest era quello più vicino che ho trovato che avesse senso nel file config/routes.rb).

È importante che, in realtà, tutti gli argomenti che hanno il valore rilevante del campo personalizzato fun_level vengano caricati nella pagina. C’è qualcos’altro che devo fare per far sì che ciò accada?


Ecco il codice per le mie note personali e nel caso possa essere utile ad altri:

–Ho creato il campo personalizzato :fun_level. Poi:

plugin.rb

TopicQuery.add_custom_filter(:fun_level) do |topics, query|
  if query.options[:fun_level]
    topics.where("topics.id in (
      SELECT topic_id FROM topic_custom_fields
      WHERE (name = 'fun_level')
      AND value = '#{query.options[:fun_level]}'
    )")
  else
    topics
  end
end

/connectors/my-plugin-outlet/fun-level.js.es6 (un file JavaScript che viene attivato quando si accede alla pagina rilevante. Quindi questo JavaScript potrebbe trovarsi in un inizializzatore o in un connettore collegato a un plugin outlet. Mi piace usare codice associato a un connettore, quindi userò qui il setup del componente):

const ajax = require('discourse/lib/ajax')

export default {
    setupComponent(args, component) {
      let parsedResultArray = []
      var endPoint = '/latest?fun_level=' + funLevel  //funLevel = variabile con valore dai parametri   
      ajax(endPoint).then(function (result) {
            console.log('risultato lista argomenti per argomenti con quel livello di divertimento = ')
            console.log(result.topic_list.topics)
            //analizza i risultati e caricali in parsedResultArray
            component.set('showTopics', parsedResultArray        
      })
   }
}

Ora, gli argomenti verranno caricati in {{topic-list topics=showTopics}} che ho nel componente corrispondente, inserito nel template tramite my-plugin-outlet.

Questo è un grande passo avanti. Grazie mille, @angus.

4 Mi Piace