-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
置顶功能不工作 + root cause analysis + word around #705
Comments
我去除掉了设置 post 默认 sticky 值的 filter,似乎这个跟只渲染一篇文章的 bug 有关联。 |
@iissnan 去掉这个默认值设置后,置顶功能无法正常使用,有计划修吗? |
@iissnan 另外,如果这个文件会导致你说的主页只渲染一篇文章的bug,一定要去掉这个文件,那可以把post.swig line 19的page.posts.first().sticky >= 0去掉,让它进入置顶渲染的逻辑,同时把line 29 set posts_normal = page.posts.find({sticky: 0})修改下,改为sticky为0或者未设置的post放到posts_normal里。这样也能解决置顶的问题 |
没有计划做修正,这个功能或许更适合在 Hexo 里做。 |
@iissnan posts_normal = page.posts.find({sticky: 0})的意思是把sticky为0的所有post放在posts_normal里,然后渲染,对于未设置sticky的post就无法渲染。如果把它改成将所有sticky为0或者未设置sticky的post放到posts_normal里,应该就能解决问题。或者更好的办法是放page.posts和posts_sticky求差集,然后给posts_normal。作者认为是否可行? |
应该可以,全部放在模板里面做,过程会有点繁琐。更好的方法即是使用 filter,从数据源上进行处理,模板会比较简单。 |
@iissnan 刚刚试过,改成set posts_normal = page.posts.find({'$not': {sticky: { '$gt': 0 }}}) 就可以了 |
@habren 是有 |
@iissnan 是在没有sticky.js的情况下。sticky.js的功能在于把没有设置sticky的post的sticky值设置为0.后面可以通过set posts_normal = page.posts.find({sticky: 0 })找到没有置顶的post集合,并渲染。现在没有sticky.js,可以通过set posts_normal = page.posts.find({'$not': {sticky: { '$gt': 0 }}})来得到未设置sticky或者sticky值为0的post集合 |
@habren 很抱歉,置顶的功能我暂时要先排后,如果你有兴趣可以实现并发 PR,谢谢。 |
@habren 根据 @iissnan 的建议,我没有再从next主题入手,而是看了 |
@habren dont understand u, write in English if not solved. If solved, close it please. |
Fixed in hexojs/hexo-generator-index#51 |
post.swig line 19 (if page.posts.first().sticky >= 0),只有每一篇的sticky大于或等于0才会优先渲染置顶帖。如果最近一篇Post没有设置sticky,且置顶不工作。另外posts_normal = page.posts.find({sticky: 0}),这会造成未设置sticky的Post不会被渲染。如果将无sticky值的post的sticy值默认设置为0,则这两个问题都不存在。但通过搜索发现,源码中并未设置默认值。
所以希望能加入将sticky值设置为0的代码
word around方法是手动将不需要置顶的post的sticy值设置为0
The text was updated successfully, but these errors were encountered: