前言

把文章底部的版权信息改成卡片,显示标题、原文地址、作者和发布时间,许可协议从主题配置里读取。

美化之前

本站使用 Hexo 6.0.0 + Butterfly 4.5.1,其他版本请按实际情况调整。样式、脚本引入及全局变量用法可参考:

参考链接

  • 小 N 同学的版权卡片教程:https://www.imcharon.com/117/(原链接暂不可用)。

修改方案

1. 替换版权模板

替换 themes/butterfly/layout/includes/post/post-copyright.pug。下面是这版代码,保留本站卡片结构,但许可名称和链接从配置读取,不再写死。

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
if theme.post_copyright.enable && page.copyright !== false
- const author = page.copyright_author || config.author
- const link = page.copyright_url || page.permalink
- const license = theme.post_copyright.license
- const licenseUrl = theme.post_copyright.license_url
.post-copyright
.post-copyright__title
strong= page.title
.post-copyright__type
a(href=url_for(link))= theme.post_copyright.decode ? decodeURI(link) : link
.post-copyright-m
.post-copyright-m-info
.post-copyright-item
span 作者
.post-copyright-cc-info= author
.post-copyright-item
span 发布于
.post-copyright-cc-info= date(page.date, config.date_format)
.post-copyright-item
span 更新于
.post-copyright-cc-info= date(page.updated || page.date, config.date_format)
.post-copyright-item
span 许可协议
.post-copyright-cc-info
a(href=licenseUrl target='_blank' rel='noopener noreferrer')= license

2. 添加样式

新建 source/static/css/post-copyright.css,添加下面的样式。如果之前改过这一块,记得先合并旧样式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#post .post-copyright {
position: relative;
margin: 40px 0 10px;
padding: 16px;
border: 1px solid var(--light-grey);
border-radius: 12px;
overflow: hidden;
background: var(--june-copyright-bg, var(--card-bg));
}
.post-copyright__title { font-size: 1.2rem; margin-bottom: 6px; }
.post-copyright__type a { word-break: break-all; }
.post-copyright-m-info { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; }
.post-copyright-item > span { opacity: .65; font-size: 12px; }
.post-copyright-cc-info { color: var(--june-theme, #49b1f5); }

然后在 _config.butterfly.yml 的 inject.head 里引入:

1
2
3
inject:
head:
- <link rel="stylesheet" href="/static/css/post-copyright.css">

3. 配置许可协议

在 _config.butterfly.yml 合并下面配置。这里沿用主题当前配置里的 BY-NC-SA 作为示例,用自己的许可协议替换即可,和独立版权页面保持一致。

1
2
3
4
5
post_copyright:
enable: true
decode: true
license: CC BY-NC-SA 4.0
license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/

单篇文章可以通过 Front Matter 的 copyright: false 关闭卡片,或用 copyright_author、copyright_url 覆盖作者与来源。不要在关闭版权时把站点级配置也一起关掉。