Butterfly标签云增加文章数上下标
文章摘要
HrnAI
文章摘要初始化中...
Butterfly主题实现标签显示文章数目
介绍作者 JayHrn
生成本文简介
推荐相关文章
前往主页
看看其他文章
此内容由作者归纳总结,仅用于文章内容的解释与总结,如有不当之处,请予指正!
反馈本文教程主要针对Hexo Butterfly
主题博客,在Butterfly
主题中,文章标签页和标签侧边栏都有文章标签的词云图 但仅仅用字体大小表示某个标签下的文章数量是不明显的,可以在这个基础上加上表示某个标签下文章数的上下标,其中<sup>
表示上标,<sub>
表示下标。
魔改教程
- 打开
\themes \butterfly\layout\includes\page\tags.pug
文件和themes\butterfly\layout\includes \widget\card_tags.pug
文件,发现绘制彩色标签云都是使用了cloudTags
函数。
另外一个绘制标签云的 函数是hexo
自带的,有兴趣的可以到\node_modules\hexo\lib\plugins \helper\tagcloud.js
研究,这里不多介绍。 - 搜索
cloudTags
函数,可以在\themes \butterfly\scripts \helpers\page.js
找到绘制标签云的代码,增加<sup>${tag.length}< / sup>
或<sub>${tag.length}</sub>
可绘制表示标签文章数的上下标。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33hexo.extend.helper.register('cloudTags', function (options = {}) {
const theme = hexo.theme.config
const env = this
let source = options.source
const minfontsize = options.minfontsize
const maxfontsize = options.maxfontsize
const limit = options.limit
const unit = options.unit || 'px'
let result = ''
if (limit > 0) {
source = source.limit(limit)
}
const sizes = []
source.sort('length').forEach(tag => {
const { length } = tag
if (sizes.includes(length)) return
sizes.push(length)
})
const length = sizes.length - 1
source.forEach(tag => {
const ratio = length ? sizes.indexOf(tag.length) / length : 0
const size = minfontsize + ((maxfontsize - minfontsize) * ratio)
let style = `font-size: ${parseFloat(size.toFixed(2))}${unit};`
const color = 'rgb(' + Math.floor(Math.random() * 201) + ', ' + Math.floor(Math.random() * 201) + ', ' + Math.floor(Math.random() * 201) + ')' // 0,0,0 -> 200,200,200
style += ` color: ${color}`
- result += `<a href="${env.url_for(tag.path)}" style="${style}">${tag.name}</a>`
+ result += `<a href="${env.url_for(tag.path)}" style="${style}">${tag.name}<sup>${tag.length}</sup></a>`
})
return result
}) - 最后Hexo三连即可。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自JayHrn
评论
匿名评论
隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果