相关文章 请按顺序阅读
hexo-pagination函数释义
hexo-generator-index 源码分析
hexo-generator-tag 源码分析
前言:
hexo-generator-index是hexo插件中应该是最简单的一个插件了
官方hexo自3.0以后就自带此插件了
但是官方的doc文档源码中,是未用此插件的
post模板只能显示post页面变量
而下列变量一概没有
page.per_page 每页显示的文章数量
page.total 总页数
page.current 目前页数
page.current_url 目前分页的网址
page.posts 本页文章
page.prev 上一页的页数。如果此页是第一页的话则为 0。
page.prev_link 上一页的网址。如果此页是第一页的话则为 ''。
page.next 下一页的页数。如果此页是最后一页的话则为 0。
page.next_link 下一页的网址。如果此页是最后一页的话则为 ''。
page.path 当前页面的路径(不含根目录)。我们通常在主题中使用 url_for(page.path)。
以上变量只有在index页面才有
而hexo-generator-index解决的问题就是把以上变量带入到模板中 形成index页面
'use strict';
const pagination = require('hexo-pagination');
module.exports = function(locals) {
const config = this.config;
const posts = locals.posts.sort(config.index_generator.order_by); //所有文章
const paginationDir = config.pagination_dir || 'page';//pagination_dir: page #分页文件夹名称
const path = config.index_generator.path || ''; //路径 缺省为空
return pagination(path, posts, {
perPage: config.index_generator.per_page, //找的是 _config.yml里面index_generator的per_page
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};
- 首先要了解hexo-pagination这个内部工具
pagination(base, posts, [options])
地址在这里
2 通过这个函数 我们知道我们可以用的变量为
this.config:_config.yml里面所有的值
locals:包含下列值
变量 | 描述 |
---|---|
posts | 所有文章 |
pages | 所有分页 |
categories | 所有分类 |
tags | 所有标签 |
3 调用方式为:
image.png
其实都是pagination的返回值而已
4 通过这个插件我们可以学到:
它仅仅指定了分页对象需要打到哪个路径上,然后通过page变量调取
举例:
一共创建4篇文章
修改config,每页3篇文章 这样就有了两页
在index.ejs中,写如下代码
current:<%= page.current %><br />
<% page.posts.each(function(post){ %>
<%= post.title %>
<% }) %><br />
current-url:<%= page.current_url %>
total: <%= page.total %><br />
next: <%= page.next %><br />
next_link: <%= page.next_link %><br />
pre: <%= page.pre %><br />
pre_link: <%= page.pre_link %><br />
__index: <%= page.__index %><br />
per_page: <%= page.per_page %><br />
path: <%= page.path %><br />
在前端显示如下:
http://localhost:4000/
current:1
hh gg asdf
current-url: total: 2
next: 2
next_link: page/2/
pre:
pre_link:
__index: true
per_page:
path: index.html
current:2
Hello World
current-url:page/2/ total: 2
next: 0
next_link:
pre:
pre_link:
__index: true
per_page:
path: page/2/index.html
网友评论