Discourse Hot Topics

:information_source: Discourse now features a /hot topic list in core that can be added to your top menu

Repository: GitHub - danskdynamit/discourse-hot-topics · GitHub

This plugin creates a “Hot” sorting criteria and builds a custom topic list based on the result of the following formula:

likes / ((hours since creation + 2) ^ gravity)

Things to note:

  • The default gravity multiplier is 1.5 but you can adjust this in the settings for the plugin.
  • You can add “hot” to the list of menu items to make it easier to access.
  • There is also the option to add ?order=hot to a URL to create your own links.
  • Once enabled, the hot rating is recalculated every 30 minutes so it will take a bit of time to take effect at first. If you want to accelerate this, you can log in to Sidekiq and manually trigger the HotRating job.

This work was graciously sponsored by @commonpawn and @Oskar. Kudos to them for making this happen.

The following topics lend more background to why this exists:

https://meta.discourse.org/t/topic-list-previews/41630/299

24개의 좋아요

In our community, we need hottest topic for a specific category. can this plugin do that?

Yes.

Go to the category page you want and then select Hot from the menu. The URL will look similar to this: yourdomain.com/c/CATEGORY/l/hot.

6개의 좋아요

Hello @joebuhlig,

Is it possible to change the frequence of the HotRating job in sidekiq ?

Give this a try:

https://github.com/danskdynamit/discourse-hot-topics/commit/c13c1a6857146d532be4c124c0841791243b424c

It adds a setting hot_topics_calc_period that lets you set the period (in minutes). Note that you’ll need to do a rebuild every time this setting is changed before it will take effect.

6개의 좋아요

Thank you @joebuhlig !

1개의 좋아요

Hello Joe,

Is the “staff like weight” parameter is taken into account in the hot topic plugin ?

This option is in the parameters “other” tab.

Currently, it is not.

1개의 좋아요

6 posts were split to a new topic: Prevent fast and short replies when a flame war is ongoing

Hello @joebuhlig,

After some tests, i’m pretty sure that replies likes, are taken into account in the formula. I think it’ll be better and more logical, to only takes likes of the first post.

Don’t you think ?

Yes. It does count likes on all posts. It’s beyond me on whether or not that’s a good way to do it. The formula is a copy from other models. @commonpawn and @Oskar, do either of you have a strong leaning here?

1개의 좋아요

@joebuhlig if you have a bit time and if @commonpawn and @Oskar are ok, i can sponsorize this job, to add an option to take or not in account replies likes.

6개의 좋아요

Just sent you a PM. :wink:

Sometimes things work out really quick. Thanks to @kam44 for making this happen.

You can now choose to use only the likes on the original post in the calculation as opposed to likes across all replies.

https://github.com/danskdynamit/discourse-hot-topics/commit/fcb645064cbea9ff2bc06099f730541c01259773

9개의 좋아요

The plugin works well, but does it do the “x new posts. Click to refresh” live updating that is done on the core lists? It would be nice if it could (not so much to change the order of the posts, but to notify the users as to which posts have replies…)

I’m getting a 500 (/hot route) error after installing it and I’ve run the HotRating job, I’m missing something?

Regarding this:

Do you think Hot Topics could be made to support Feature Voting as well? Or would it be easier if Feature Voting just comes with its own concept of “Hot” sorting?

I see no reason for a cascade of dependency, feature voting can take care of itself

5개의 좋아요

이 플러그인에서 오류가 발생했습니다.

플러그인을 discourse의 plugins 폴더에 추가한 후 bundle exec rails server로 rails 서버를 시작했는데, 이 오류가 발생했습니다. 이런 오류를 유발한 것은 이 플러그인뿐입니다.

1: from …/plugins/discourse-hot-topics/plugin.rb:98:in block in activate!' .../plugins/discourse-hot-topics/plugin.rb:100:in module:Jobs’: uninitialized constant Jobs:: Jobs::Scheduled
Did you mean? Scheduler (NameError)

** INCOMPATIBLE PLUGIN **

discourse를 처음 사용해 보는데, 제가 치명적인 실수를 하고 있는 건가요? 아니면 다른 분들도 같은 문제를 겪고 계신가요.

Ruby 2.6.1과 Rails 6.0.0을 사용 중이며, Github의 최신 버전 discourse를 사용하고 있습니다.

5개의 좋아요

변경 사항

class HotRating < Jobs::Scheduled

을

class HotRating < Scheduled

로 변경했습니다.

이 방법으로 해결되었습니다. 이 클래스는 이미 ::Jobs 모듈 안에 감싸져 있으므로 모듈을 다시 지정할 필요가 없다고 생각합니다.

1개의 좋아요