Closed wonter closed 1 year ago
用的是什么主题?
@printempw hexo-next
是因为主题使用了 site.posts.length
获取文章数量,而本插件只对 page.posts
做了注入。你可以先尝试把主题这个位置的 site.posts.length
替换为 page.posts.length
,应该可以解决
@printempw 似乎不行,只改第一个site.posts.length
没有效果,再把第二个site.posts.length
也改了就变成10了,改动:
diff --git a/layout/archive.njk b/layout/archive.njk
index 76e1a14..df87d36 100644
--- a/layout/archive.njk
+++ b/layout/archive.njk
@@ -14,7 +14,7 @@
<div class="post-block">
<div class="post-content">
<div class="collection-title">
- {%- set posts_length = site.posts.length %}
+ {%- set posts_length = page.posts.length %}
{%- if posts_length > 210 %}
{%- set cheers = 'excellent' %}
{% elif posts_length > 130 %}
@@ -28,7 +28,7 @@
{% else %}
{%- set cheers = 'um' %}
{%- endif %}
- <span class="collection-header">{{ __('cheers.' + cheers) }}! {{ _p('counter.archive_posts', site.posts.length) }} {{ __('keep_on') }}</span>
+ <span class="collection-header">{{ __('cheers.' + cheers) }}! {{ _p('counter.archive_posts', page.posts.length) }} {{ __('keep_on') }}</span>
</div>
{{ post_template.render(page.posts) }}
(END)
那奇怪了,同样是用的 page.posts
,隐藏文章可以正常显示,但是 length 却不对吗?
第一个site是用于显示评价
嗯..! 目前共计x篇日志。 继续努力
。第二个site修改为page.posts.length
只能统计当前页的个数,而不能统计全部文章个数,因为当前页只有10个所以显示为10篇,切换到另一页则显示另一个数字了。
我看了一下,其实还有一种方法,就是在主题渲染的时候把传递给模板的 site.posts
修改为包括隐藏文章在内的所有文章。因为基本上主题都是使用 page.posts
来获取文章列表的,所以理论上不会有什么影响……(这样就不需要修改主题文件了)
想要尝试的话可以在博客根目录下的 scripts
文件夹中新建 test.js
文件,然后把以下内容粘贴进去:
const chalk = require('chalk')
// Expose all posts to these pages as variable `site.posts`
// const public_pages = ['archive', 'tag']
hexo.extend.filter.register('template_locals', function (locals) {
const all_posts = locals.site.all_posts
if (!all_posts) {
hexo.log.debug('failed to get all_posts, is hexo-hide-posts enabled?')
return
}
// if (!public_pages.some(pattern => locals.path.includes(pattern))) {
// hexo.log.debug('page does not match, skip')
// return
// }
locals.site.posts = locals.site.all_posts
hexo.log.debug('current page is ' + chalk.magenta(locals.path))
hexo.log.debug('set site.posts to all_posts, length is ' + all_posts.length)
return locals
})
如果没问题的话后续可以更新到插件里。
我看了一下,其实还有一种方法,就是在主题渲染的时候把传递给模板的 site.posts 修改为包括隐藏文章在内的所有文章。因为基本上主题都是使用 page.posts 来获取文章列表的,所以理论上不会有什么影响……(这样就不需要修改主题文件了)
想要尝试的话可以在博客根目录下的 scripts 文件夹中新建 test.js 文件,然后把以下内容粘贴进去
可以 👻
想自定义一个不想使用public_generators: [archive]要怎么做?比如我想使用public_generators: [hidden]
想自定义一个不想使用public_generators: [archive]要怎么做?比如我想使用public_generators: [hidden]
@hoey94 我没有理解你的问题,可以描述得更清晰一些吗?public_generators
里的内容要根据实际的 hexo generator 注册名称来填写。
配置public_generators: [archive]时虽然归档页面可以展示隐藏文章了,但归档页面的计数没有计上
这里的
目前共计 13 篇日志
应该是没计算上隐藏文章的, 但个人理解如果希望在archive里展示的话,计数器也应该计算上隐藏文章才合理?