Hexo插件
2021.11.19 Fri

总结一下博客使用的 Hexo 插件,以及如何使用 Hexo 的 API 写一个自己的插件.

  • hexo-abbrlink 为每一个 post 生成一个链接

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # _config.yml文件
    abbrlink:
    alg: crc32 #support crc16(default) and crc32
    rep: hex #support dec(default) and hex
    drafts: false #(true)Process draft,(false)Do not process draft. false(default)
    # Generate categories from directory-tree
    # depth: the max_depth of directory-tree you want to generate, should > 0
    auto_category:
    enable: true #true(default)
    depth: #3(default)
    over_write: false
    auto_title: false #enable auto title, it can auto fill the title by path
    auto_date: false #enable auto date, it can auto fill the date by time today
  • hexo-all-minifier HTML,JS,CSS 以及图片压缩

  • hexo-filter-nofollow 自动为文章里的链接添加 nofollow 属性

  • hexo-generator-search 为文章生成搜索索引文件,不需要索引的文章在 markdown 里添加 indexing: false

  • 自定义插件的方法
    因为 Hexo 在启动时会自动加载主题目录下 scripts 文件夹的 JS 文件,因此可以在这里直接使用 Hexo 提供的 API.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    const pagination = require("hexo-pagination");
    hexo.extend.generator.register("words", (locals) => {
    const posts = locals.posts;
    posts.data.sort((a, b) => b.date.unix() - a.date.unix());
    const words = posts.filter((post) => {
    const cate = post.categories.filter((cate) => cate.name === "words");
    if (cate.length !== 0) {
    return post;
    }
    });

    return pagination("words", words, {
    perPage: 10,
    layout: ["index"],
    data: {},
    });
    });

    上面的代码注册了指向 /words 的路由,并且在该路由下仅显示分类名称为 words 的文章,使用分页工具将每页文章数量设置为 10,页面样式套用 index 模板.


参考链接:
Hexo API 文档

检测到页面内容有更新,是否刷新页面