Hexo中同时使用多个主题


Hexo中同时使用多个主题

最近想在github上搭建一个Homepage,但是我的博客已经把immortalqx.github.io这个坑给占着了。

一个很自然的想法就是让Hexo同时使用多个主题,一个主题给我的博客,一个主题给我的Homepage,这样就可以在保持博客现状的情况下搭建一个风格严谨的Homepage。

实现思路

类似于hexo cl && hexo g && hexo d这样的命令,对hexo来说是默认按照_config.yml设定的参数来执行渲染的。而_config.yml文件中指定了网站的url、root、source_dir和public_dir等非常关键的数据。

所以我们可以写两个config文件,比如_config.yml继续用于博客,然后新建一个_config_homepage.yml用于搭建Homepage。之后,我们可以通过hexo g可以默认使用_config.yml来搭建博客,再通过hexo --config _config_homepage.yml g来指定Homepage的config文件来搭建Homepage。

在使用hexo --config _config_homepage.yml之前,我们还需要修改_config_homepage.yml文件中的参数,让Homepage依附于博客,即把Homepage的public_dir放到博客的public_dir下,这样就可以通过类似于immortalqx.github.io/homepage的形式来访问Homepage。

实现过程

准备工作

  1. 更改博客采用的主题的config文件,将新增Homepage的标签(不同主题设置有区别,这里以matery为例)。

    menu:
      Index:
        url: /
        icon: fas fa-home
    ......
      Homepage:
        url: /homepage
        icon: fas fa-award
  2. 复制root目录下的_config.yml文件,重命名为_config_homepage.yml

  3. 安装需要使用的新主题(以academia为例)。注意要记得安装新主题需要的一些依赖,防止无法进行渲染。

    cd your-hexo-directory
    git clone https://github.com/PhosphorW/hexo-theme-academia.git themes/academia
  4. 修改_config_homepage.yml文件,(下面仅列出需要修改的数据,根据使用的主题要修改的数据可能不一样)。

    # Site
    # 部分选项置空,防止和采用的theme冲突
    title: Homepage
    subtitle: 'Homepage'
    description:
    keywords:
    author:
    language: EN
    timezone: ''
    
    ......
    
    # URL
    # 在原来的基础上增加一个“/homepage”
    url: http://Immortalqx.github.io/homepage
    root: /homepage
    
    ......
    
    # Directory
    # 新设置一个source文件夹,但是public文件夹要放到博客的public文件夹下(这样才能够在博客中打开Homepage)
    source_dir: source_homepage
    public_dir: public/homepage
    
    ......
    
    # Extensions
    ## Plugins: https://hexo.io/plugins/
    ## Themes: https://hexo.io/themes/
    # 设置成需要使用的新主题
    theme: academia
  5. 修改academia主题的config,更改资源文件目录,icon、favicon等。这里就看个人喜好了,可以在这里新增一个跳转到博客的链接,也可以不写。

  6. 创建采用新主题的页面:

    hexo --config _config_homepage.yml new "xxxxx"
  7. 在新页面中增加内容。

开始部署

hexo cl
hexo --config _config.yml g
hexo --config _config_homepage.yml g
hexo d

注意事项:

  • 由于本博客介绍的方法中,新主题渲染的页面在博客的public文件夹下,所以可以通过hexo cl来清除原来渲染的页面。
  • 通过hexo --config来指定config文件渲染博客和Homepage。
  • 由于所有渲染内容都在原博客的public文件夹下,所以这里对应的是同一个github仓库,只需要hexo d就能同时把两个主题渲染的页面推送过去。

文章作者: Immortalqx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Immortalqx !
评论
  目录