Demo
注册使用腾讯位置服务
新建应用
在腾讯位置服务注册账号,根据引导新建应用,选择WebservicAPI
获取应用密钥KEY
。
应用名称
和应用类型
无要求- 白名单:
- eternlty.top(即你的域名)
- localhost(本地预览用)
KEY
的格式为:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

分配KEY
在腾讯位置服务控制台的账户额度中,分配额度。

创建访客卡片pug文件
在 themes/butterfly/layout/includes/widget/
目录下新建 card_visitor.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 26 27 28 29 30
| .card-widget#card-visitor .item-headline i.fas.fa-user //标题 span 来访者 .item-content #welcome-info script. var longitude = "XXX.XXXXX"; //你的位置-经纬度-东经 var Latitude = "XX.XXXXX"; //你的位置-经纬度-西经 var txkey = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"; // 你的api密钥 var ipLoacation; function initWelcome() { if (typeof welcometxmap === 'function') welcometxmap(); } if (typeof welcometxmap === 'function') welcometxmap(); window.addEventListener('load', initWelcome); document.addEventListener("pjax:complete", initWelcome); // 加载JS文件,文件可下载下来编辑替换为自己的(已压缩,注意格式化) if (typeof welcometxmap === 'undefined') { var script = document.createElement('script'); script.src = 'https://unpkg.com/eternlty-blog-pictures@1.2.4/js/txmap.js'; script.onload = function() { if (typeof welcometxmap === 'function') welcometxmap(); }; document.head.appendChild(script); }
|
添加CSS样式
在你的自定义样式source/css/eternity.css
文件,没有则新建,添加:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #welcome-info { overflow: hidden; --icat-card-welcome: #49b1f5; } #welcome-info .welcome-time { width: 100%; margin: 12px 0 0; display: inline-flex; } #welcome-info .welcome-message { width: 100%; margin-bottom: 8px; display: inline-flex; } #welcome-info .welcome-region { background: var(--icat-background); border: var(--style-border); color: var(--icat-fontcolor); border-radius: 8px; display: inline-flex; align-items: center; padding: 6px 10px; margin: 6px 0; }
.ip-address { filter: blur(2px); cursor: default; transition: filter 0.5s ease; color: #49b1f5; }
.ip-address:hover { filter: none; }
@media screen and (max-width: 768px) { #card-visitor { display: none; } }
|
若没有生效,请检查是否在主题配置文件 _config.butterfly.yml
中添加自定义 CSS 文件的引用,示例如下:
1 2 3 4
| inject: head: - <link rel="stylesheet" href="/css/eternity.css">
|
修改主题配置
在 themes/butterfly/layout/includes/widget/index.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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #aside-content.aside-content //- post if globalPageType === 'post' - const tocStyle = page.toc_style_simple - const tocStyleVal = tocStyle === true || tocStyle === false ? tocStyle : theme.toc.style_simple if showToc && tocStyleVal .sticky_layout include ./card_post_toc.pug else !=partial('includes/widget/card_author', {}, {cache: true}) !=partial('includes/widget/card_announcement', {}, {cache: true}) !=partial('includes/widget/card_top_self', {}, {cache: true}) // 仅在文章页显示 + !=partial('includes/widget/card_visitor', {}, {cache: true}) .sticky_layout if showToc include ./card_post_toc.pug if page.series include ./card_post_series.pug !=partial('includes/widget/card_recent_post', {}, {cache: true}) !=partial('includes/widget/card_ad', {}, {cache: true}) else //- page !=partial('includes/widget/card_author', {}, {cache: true}) !=partial('includes/widget/card_announcement', {}, {cache: true}) !=partial('includes/widget/card_top_self', {}, {cache: true}) // 仅在page页显示 + !=partial('includes/widget/card_visitor', {}, {cache: true}) // 仅在主页显示 + if globalPageType === 'home' + !=partial('includes/widget/card_visitor', {}, {cache: true})
.sticky_layout if showToc include ./card_post_toc.pug !=partial('includes/widget/card_recent_post', {}, {cache: true}) !=partial('includes/widget/card_ad', {}, {cache: true}) !=partial('includes/widget/card_newest_comment', {}, {cache: true}) !=partial('includes/widget/card_categories', {}, {cache: true}) !=partial('includes/widget/card_tags', {}, {cache: true}) !=partial('includes/widget/card_archives', {}, {cache: true}) !=partial('includes/widget/card_webinfo', {}, {cache: true}) !=partial('includes/widget/card_bottom_self', {}, {cache: true})
|
结语
最后hexo clean
+hexo s
带走预览即可
本文根据该教程改良而来,直接集成到主题,原文链接如下