手把手教你在Hexo中使用Github贡献日历(以Next主题为例)
起因
以下都是废话,可以直接跳到下一节~
其实,我对能够将 Github 贡献日历(Contribution Calendar)放进自己的博客这件事,早就垂涎久矣。当初尝试了各种方法,都没有能够在我的 Next 主题上实现,得知 sakuraplus主题 已经融合了这个功能实在是羡慕。
最近准备校招,压力有些大,不想学习,就开始琢磨着折腾一下自己的博客,妄想能给面试官留个特别的印象(bushi)。今天,打开 Github 看见贡献日历,又动了试试看的念头。百度一下,发现了小冰大神写的 hexo-githubcalendar 插件,他实现的效果实在是太棒了,引入方法也很简单,而且很多主题都能使用。
但是,我按照他的教程一步步做了,却总是显示不出。于是,我在 Github Zfour/hexo-github-calendar 中的 Next theme Issue 下,看见了叶叶菜的回复,试图和他取得联系,问问他是怎么做的。很幸运,叶叶菜不久就加了我 QQ,他说,他嫌麻烦没有用这个插件,并且热心地推荐了一个老外实现的方法。
Github 地址:https://github.com/2016rshah/githubchart-api
这个方法最绝的地方是,将你自己的贡献日历变成了图片,只需要使用一行 HTML 语句,就可以在任何地方使用贡献日历。
<img src="https://ghchart.rshah.org/2016rshah" alt="2016rshah's Github chart" />
但缺点是,不像小冰的插件那样可以显示上传日期以及提交次数等等。
现在开始!
此方法的 Github 地址:https://github.com/2016rshah/githubchart-api
最简单的方法
如果你想以最简单方法使用贡献日历,那么只需要在你的 Markdown 文本中,使用:
<img src="https://ghchart.rshah.org/你的Github用户名" alt="???'s Github chart" />
例如,若你想在“关于”页面使用贡献日历,那么可以在 Blog\source\about
目录下,打开 index.md
,在需要的位置插入上面的语句即可。
注意,要使用自己的 Github 用户名哦!
效果如下:
自定义贡献日历的配色方案
这个方法的作者很贴心地允许我们自定义贡献日历的配色方案。
我们只需要将 src
属性改为 https://ghchart.rshah.org/<HEX-COLOR>/你的Github用户名
,其中 <HEX_COLOR>
为任意的十六进制颜色代码。它将根据这个颜色,自动为日历修改配色。
完整语句如下:
<img src="https://ghchart.rshah.org/409ba5/你的Github用户名" alt="???'s Blue Github Chart" />
效果图:
放进首页和归档页(以Next主题为例)
首先,打开 Blog\themes\next\layout
目录下的 _layout.njk
文件。
找到 {%- include '_partials/header/sub-menu.njk' -%}
,在这条 twig 语句下方添加如下代码:
{%- if page.type !== 'categories' and page.type !== 'tags' and page.type !== 'schedule' and page.type !== 'works' and page.type !== 'about' and page.type !== 'post'%}
<div class="post-block animated fadeIn">
<h5 class="post-title" itemprop="name headline">
<a href="https://github.com/你的Github用户名" class="post-title-link" itemprop="url">Github Contribution Calendar</a>
</h5>
<div class="post-body animated fadeInDown" itemprop="articleBody">
<img style="width: 100%; margin-top: 30px;" src="https://ghchart.rshah.org/e77c8e/你的Github用户名" alt="???'s Blue Github Chart" />
</div>
</div>
{%- endif %}
我的代码:
⚠️ 注意
☝️第一,要把黄色框框里面的代码换成你的信息!
✌️第二,绿色框框要根据你博客的情况写。
其中,page.type
是在对应页面的 index.md
文件的首部设置的,语句为 type: "对应类型"
。
以 about 页面为例,page.type
在 Blog\source\about
目录下的 index.md
文件的首部添加 type: "about"
,如下:
因此,如果你不想在你的每篇文章顶部都显示贡献日历,那么你将不得不在每篇文章的 Markdown 文件首部都添加 type: "post"
。
没错,我也觉得很麻烦,如果你有更好的办法,请告诉我!😋
另外,如果你想让贡献日历显示在 about 页面,只需要将 page.type !== 'about'
删掉即可。
最终效果
首页的效果如下:
归档页效果如下: