从15年末开始,陆陆续续记录的一些文档因为某些不可抗力的原因,需要做一些迁移的工作。刚开始写博客的时候用的farbox,后来迁移到bitcron,现在要回归github pages。记录一次文档的迁移过程吧。

关于分类和标签的处理

借用B乎上一个表格

分类 标签
排他性
关系 从属 相关(关联)
创建 事先规划 随时增加
代价

满足排他性的归为分类,不满足排他性条件的归为标签。分类是固定的、严谨的;标签是自由的、有特色的、是可以修改和添加的。

hexo框架中使用分类和标签

安装相应的插件

在项目根目录下执行:

npm install hexo-generator-category --save

npm install hexo-generator-tag --save

新增对应的文件

在项目根目录下执行:

hexo new page tags

hexo new page categories

修改对应的文件内容

文件 ./source/categories/index.md 修改后的内容:

---
title: categories
date: 2021-07-14 16:11:57
type: categories
comments: false
---

文件 ./source/tags/index.md 修改后的内容:

---
title: tags
date: 2021-07-14 16:12:05
type: tags
comments: false
---

在写文章时需要在文章前标注相应的tag以及category。

添加相对应的前端链接

一般情况下是在对应的主题的配置文件中,或者工程的配置文件中修改Menu值

menu:
    Home: /
    Archives: /archives
    Categories: /categories
    Tags: /tags

新增相应的分类和标签的地址,即可。

重要内容

一般情况,如果按照上述操作即可实现分类和标签的归档。但是假如你当前使用的主题没有实现相应的模板则不能使用相应的功能。此时需要修改主题的模板文件来增强其分页和归档的功能。

查看***./themes/XXX-theme/layout/category.pug./themes/XXX-theme/layout/tag.pug***是否存在,这两个文件是选择某个分类或某个标签时,文章列表的渲染模板,其文件后缀可以为pug/ejs等。

如果这两个文件存在,但是访问/categories/tags页面返回404,则说明对应的./themes/XXX-theme/layout/post.pug 文件中没有处理当前页为分类或者标签页的情况。

以下是简单的处理方式:

mixin post(item)
    if(page.type == 'categories')
        - var categoriesList = list_categories({ show_count: true})
        .archive
            .h2 类别
            if categoriesList
                != categoriesList
            else
                p None.
    else if(page.type == 'tags')
        - var tagsList = list_tags({ show_count: true})
        .archive
            .h2 标签
            if tagsList
                != tagsList
            else
                p None.
    else
        .post.article.post-block
            h1.post-title
                != item.title
            +postInfo(item)
            .post-content
                != item.content      

具体的代码以及辅助函数的使用可以查看hexo.io中的帮助文档,实现了对应的处理方式就可以实现分类和标签页功能。同时也支持自定义对其进行渲染展示。