文章目录

  • 一、前言
  • 二、正文
    • 1.配置
    • 2.流程说明
      • (1)读取date
      • (2)日历显示规则
    • 3.优化

一、前言

一直想要模仿github和gitee代码提交统计样式,今天在echarts找到了日历图模块的接口,漂亮!

在hexo文章achives页面添加显示效果如下:

当然,在sakuraplus主题下已经融合了该功能哦!

二、正文

1.配置

  1. 在主题配置文件themes\sakura\_config.yml下添加:

    # Whether to display post-calender in the `archive` page
    # 设置在归档页面achive中是否显示'文章日历'控件
    postCalendar: true
    

    如果不想显示,设置为false即可。

  2. 在归档页添加themes\sakura\layout\_widget\post-calendar.ejs

               <div id="calendar"><% if (theme.postCalendar) { %><%- partial('_widget/post-calendar') %><% } %></div>
    

    对应了config配置的true和false开关,为true时加载_widget/post-calendar渲染。

    添加位置:

  3. 新建日历样式文件themes\sakura\layout\_widget\post-calendar.ejs

复制如下内容:

<div class="container archive-calendar"><div class="card"><div id="post-calendar" class="card-content"></div></div>
</div>
<style type="text/css">#post-calendar {width: 100%;height: 225px;margin-top: 20px;border-radius: 12px;background-color: rgb(255, 255, 255,0.5);}
</style><script type="text/javascript" src="<%= theme.libs.js.echarts %>"></script>
<script type="text/javascript">let myChart = echarts.init(document.getElementById('post-calendar'));<%// calculate range.var startDate = moment().subtract(1, 'years');var endDate = moment();var rangeArr = '["' + startDate.format('YYYY-MM-DD') + '", "' + endDate.format('YYYY-MM-DD') + '"]';// post and count map.var dateMap = new Map();site.posts.forEach(function (post) {var date = post.date.format('YYYY-MM-DD');var count = dateMap.get(date);dateMap.set(date, count == null || count == undefined ? 1 : count + 1);});// loop the data for the current year, generating the number of post per dayvar i = 0;var datePosts = '[';var dayTime = 3600 * 24 * 1000;for (var time = startDate; time <= endDate; time += dayTime) {var date = moment(time).format('YYYY-MM-DD');datePosts = (i === 0 ? datePosts + '["' : datePosts + ', ["') + date + '", ' +(dateMap.has(date) ? dateMap.get(date) : 0) + ']';i++;}datePosts += ']'; %>let option = {title: {top: 0,text: '文章日历',left: 'center',textStyle: {color: '#3C4858'}},tooltip: {padding: 10,backgroundColor: '#555',borderColor: '#777',borderWidth: 1,formatter: function (obj) {var value = obj.value;return '<div style="font-size: 14px;">' + value[0] + ':' + value[1] + '</div>';}},visualMap: {show: true,showLabel: true,categories: [0, 1, 2, 3, 4],calculable: true,inRange: {symbol: 'rect',color: ['#ebedf0', '#c6e48b', '#7bc96f', '#239a3b', '#196127']},itemWidth: 12,itemHeight: 12,orient: 'horizontal',left: 'center',bottom: 0},calendar: [{left: 'center',range: <%- rangeArr %>,cellSize: [13, 13],splitLine: {show: false},itemStyle: {width: '1.88679%',height: '15px',color: '#EEEEEE',borderColor: '#FFF',borderWidth: 2},yearLabel: {show: false},monthLabel: {nameMap: 'cn',fontWeight: 'lighter',fontSize: 12},dayLabel: {show: true,formatter: '{start}  1st',fontWeight: 'lighter',nameMap: ['日',' ',' ','三',' ',' ','六',],fontSize: 12}}],series: [{type: 'heatmap',coordinateSystem: 'calendar',calendarIndex: 0,data: <%- datePosts %>}]};myChart.setOption(option);
</script>

注意文章第16排:<%= theme.libs.js.echarts %>"

  • 如果是其他主题,修改为

    https://cdn.jsdelivr.net/gh/cungudafa/cdn/js/echarts.min.js
    
  • 如果是sakuraplus直接在config添加:

    echarts: https://cdn.jsdelivr.net/gh/cungudafa/cdn/js/echarts.min.js
    


    现在hexo调试应该可以出现日历图了。

2.流程说明

具体说一下echarts如何显示日历图:

  1. 读取hexo文章信息(date)
  2. echarts基本使用方法

(1)读取date

步骤:

  1. 获得去年今日到今年今日所有天数
  2. 获得文章发布时间,存入dateMap
  3. 根据Map做一个次数的累计,存入datePosts
  4. 将关键信息写入options

参考于:hexo-theme-matery主题 ,这款主题对echarts用得淋漓尽致,漂亮!

(2)日历显示规则

echarts的食用方法:引入js,初始化到容器,在options写入配置。
本次日历模板使用文档:官网,对于options的配置一定参考官方使用文档。
(标题、提示语、注释都如下图)

具体说说日历的构成:(根据官网和gitee样式,高仿效果)

3.优化

当然本文只是对gitee高仿日历图,

如果你对样式还不满意,请结合官网修改。

单个元素:

多种样式:



更多优化参考:
sakuraplus主题

hexo(sakura)仿gitee添加文章贡献度日历图(echarts)相关推荐

  1. Hexo Landscape博客添加【农历日历】

    效果见:我的个人网站 的右下角 第一步,在主题目录配置下打开 themes\landscape\layout\_widget 新建 calender.ejs 文件, 代码太长,所有在本文最后附上. 注 ...

  2. 基于pyecharts的数据可视化(四):1.基本图表之日历图

    文章目录 日历图 日历图使用的数据格式 日历坐标系组件配置项:CalendarOpts 日历图 通过add添加系列名称.系列数据.标签配置项.日历坐标系组件配置型.提示框组件配置项.图元配置项. 标签 ...

  3. 如何在hexo上创建一篇文章

    博客已经搭建好了,虽然功能比较少,但是还是可以写文章的 新建文章 使用命令来新建文章 hexo new [layout] <title> layout 是文章的布局,默认为post,可以先 ...

  4. Hexo 部署到 Gitee

    Hexo 部署到 Gitee 文章目录 Hexo 部署到 Gitee 1. Gitee 创建仓库 2. 修改 Hexo 配置文件 3. 生成/添加 SSH 公钥 3.1 生成 SSH 公钥 3.2 将 ...

  5. Hexo Next 博客添加相册瀑布流

    原文:https://rebootcat.com/2020/09/19/nextphotowall/ 前言 一直没有时间来整理下博客搭建的一些事情,现在补上一篇,给 Hexo Next 博客添加一个相 ...

  6. Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮...

    Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮 前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP) ...

  7. hexo之next主题添加分类

    hexo之next主题添加分类 @(Hexo+Github) 当前博客主题用的是next最新版,最初是比较简陋的界面,一直放着没怎么动,测试了下Latex的显示效果没有达到在CSDN我的博客上的效果, ...

  8. hexo博客中添加categories分类

    title: hexo博客中添加categories分类 date: 2020-04-01 16:45:16 tags: hexo categories: 学习 方法如下: 在根目录下scaffold ...

  9. 怎么往日历里面加时钟java,怎么添加电脑桌面时钟日历

    怎么添加电脑桌面时钟日历 有很多人都不知道win7系统怎么添加桌面时钟日历,下面就为大家介绍win7系统添加桌面时钟日历的方法. 1.先双击打开自己电脑桌面上的"计算机".如图所示 ...

  10. wp.qq.com.index.html,使用纯代码给WordPress添加文章目录功能,支持快速定位和多级目录...

    wordpress是一款强大的博客系统,支持各种DIY,今天我就给大家带来使用纯代码给Wordpress添加文章目录的功能,使看文章更简单!并且支持点击目录标题快速定位到文章页面指定内容点. 一.文章 ...

最新文章

  1. 机器学习中的梯度下降法
  2. boost库 tbb_c++ 最简单的TBB示例
  3. python输出价目表-Python:使用基于事件驱动的SAX解析XML
  4. 域控限制软件安装_谷歌调整Android Q安装第三方APP策略,每次都需要手动解除限制...
  5. SpringBoot中通过重写WebMvcConfigurer的方法配置静态资源映射实现图片上传后返回网络Url
  6. 【Gunicorn】gunicorn配置文件详解
  7. 安装MAMP后的控制台访问mysql问题
  8. 阜阳市乡镇企业中专学校计算机教师高翱简介,2017年中南林业科技大学博士研究生奖助学金...
  9. Spring管理的交易说明-第2部分(JPA)
  10. [转载] python __slots__ 详解(上篇)
  11. jquery之统计数字parseFloat
  12. JSP WEB开发入门基础到高手进阶教程001
  13. Qt 信号和槽机制( 详解 )
  14. 手把手教你如何做一套utm广告投放系统
  15. 《信息安全系统设计基础》课程总结 20155335 俞昆
  16. jump label
  17. 鬼吹灯java攻略_密室逃脱鬼吹灯攻略完美过关图文详解
  18. 20180802 (个别内置方法)
  19. [Practical.Vim(2012.9)].Drew.Neil.Tip16学习摘要
  20. 最合适触屏方法 指划修图Snapseed

热门文章

  1. 免费历史文献数字资源
  2. 计算机桌面调音量的图标不见了,如何解决电脑音量图标不见了
  3. 关于网站嵌入faceboook以及youtube视频
  4. 抖音短剧本应该怎么写
  5. win10系统访问共享文件速度过慢的解决方法
  6. 一个exe可执行程序的生与死
  7. 外贸术语 交货条件(zt)
  8. 康托尔点集matlab实数,康托尔集是什么。详细解释
  9. iconfont 彩色图标的使用
  10. PDP激活请求,创建请求,删除请求