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。
实现过程
准备工作
更改博客采用的主题的config文件,将新增Homepage的标签(不同主题设置有区别,这里以matery为例)。
menu: Index: url: / icon: fas fa-home ...... Homepage: url: /homepage icon: fas fa-award
复制root目录下的
_config.yml
文件,重命名为_config_homepage.yml
。安装需要使用的新主题(以academia为例)。注意要记得安装新主题需要的一些依赖,防止无法进行渲染。
cd your-hexo-directory git clone https://github.com/PhosphorW/hexo-theme-academia.git themes/academia
修改
_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
修改academia主题的config,更改资源文件目录,icon、favicon等。这里就看个人喜好了,可以在这里新增一个跳转到博客的链接,也可以不写。
创建采用新主题的页面:
hexo --config _config_homepage.yml new "xxxxx"
在新页面中增加内容。
开始部署
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
就能同时把两个主题渲染的页面推送过去。