Homeland 话题显示次序

Joseph365 · 2020年04月30日 · 最后由 Joseph365 回复于 2020年04月30日 · 3151 次阅读

用的 3.4 版,我测试从 pgsql 直接导入 50 万的帖子,全是 topic。成功后发现帖子列表包括社区首页的显示是按照 topicid 的数值从小到大排列显示的,反而后台的主题列表顺序正常,是按照 topicid 从大到小排列显示,这个是什么原因?我没有改动程序代码,我想前台显示的顺序和后台一样该怎么做?

还有我发现首页的显示页数只有 60 页,ruby china 的首页显示页数也只有 60 页,但具体到每个节点显示的页数是正常的,是有意这样的吗?

多谢!

话题排序是按照 last_active_mark 来排列的,它存在的意义是让一定时间范围内有新回复的主题可以排到前面。

所以你导入数据的时候,需要把创建时间转为 Unix Timestamp 存入 topics.last_active_mark 字段

我再测试下,非常感谢您的答复。那那个首页只显示分页最大 60 页的显示是故意为之的?

查看下 /app/models/topic.rb #111

def self.total_pages
  return @total_pages if defined? @total_pages

  total_count = Rails.cache.fetch("topics/total_count", expires_in: 1.week) do
    self.unscoped.count
  end
  if total_count >= 1500
    @total_pages = 60
  end
  @total_pages
end
xiaogui 回复

了解了,感谢!

然后第一个是 /app/controllers/topics_controller.rb #17

@topics = topics_scope.without_suggest.last_actived.page(params[:page])

/app/models/topic.rb #26

# scopes
scope :last_actived,       -> { order(last_active_mark: :desc) }

@huacnlee 我重新把 unix timestamp 加进去就好了,谢谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号