ATUALIZAÇÃO: Acredito que consegui (na maior parte) fazer funcionar (!). Agora, isso mostrará os tópicos mais recentes que correspondem ao valor do campo personalizado. (o método #latest foi o mais próximo que encontrei que fazia sentido no arquivo config/routes.rb).
É importante que, de fato, todos os tópicos que possuem o valor relevante do campo personalizado fun_level sejam carregados na página. Há algo mais que eu precise fazer para que isso aconteça?
Aqui está o código para minhas próprias anotações e caso seja útil a outros:
–Criei o campo personalizado :fun_level. Em seguida:
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 (um arquivo JavaScript que é ativado ao acessar a página relevante. Então, esse JavaScript poderia estar em um inicializador ou em um conector ligado a um plugin outlet. Gosto de usar código que acompanha um conector, então usarei um componente de configuração aqui):
const ajax = require('discourse/lib/ajax')
export default {
setupComponent(args, component) {
let parsedResultArray = []
var endPoint = '/latest?fun_level=' + funLevel //funLevel = variável com valor dos parâmetros
ajax(endPoint).then(function (result) {
console.log('resultado da lista de tópicos para tópicos que correspondem a esse nível de diversão = ')
console.log(result.topic_list.topics)
//analisar resultados e carregá-los no parsedResultArray
component.set('showTopics', parsedResultArray
})
}
}
Agora, os tópicos serão carregados em {{topic-list topics=showTopics}} que tenho no componente correspondente, colocado no template através do my-plugin-outlet.
Este é um grande avanço. Muito obrigado, @angus.