How to seperate the "drive by" topics from the "deeper" discussions?

The avenue I would pursue is ranking content on a user by user basis by comparing content classifications - categories, tags and authorship (i.e. who made the content) - with user-interest proxies - likes, views, reading time, replies (and others) - of the individual user. Use that ranking to create a user-specific topic list.

Maybe you know how to already, but if you don’t, the way I would do it (and the way it’s done in @joebuhlig’s Hot Topics plugin) is:

  1. Add your list to the top menu options and the filter options is easy. Just add these lines to your plugin.rb e.g.

    Discourse.top_menu_items.push(:agenda)
    Discourse.anonymous_top_menu_items.push(:agenda)
    Discourse.filters.push(:agenda)
    Discourse.anonymous_filters.push(:agenda) 
    
  2. Add your list logic to TopicQuery. e.g.

    require_dependency 'topic_query'
    class ::TopicQuery
      SORTABLE_MAPPING["agenda"] = "custom_fields.event_start"
    
      def list_agenda
        @options[:order] = "agenda"
        topics = create_list(:agenda, ascending: "true")
      end
    end   
    

I suggest you make both the content classifications and user interest proxies the subject of site settings so that different mixtures can be applied according to the initial hypothesis and experience of each forum.

4 Likes