基于Hexo和Butterfly创建个人技术博客,(11) 使用插件增强博客站点能力

news2024/11/15 17:35:08

Butterfly官方网站,请 点击进入

本章目标:
掌握常用的plugin插件的用法,本文中是butterfly主题内置集成的第三方插件(部分插件需要再次安装);

一、建议开启的三方插件

KaTeX-数学公式

katex:
  enable: true
  # true 表示每一页都加载katex.js
  # false 需要时加载,须在使用的Markdown Front-matter 加上 katex: true
  per_page: false
  hide_scrollbar: true
markdown:
    plugins:
      - '@renbaoshuo/markdown-it-katex  
npm un hexo-renderer-marked --save # 如果有安装这个的话,卸载
npm un hexo-renderer-kramed --save # 如果有安装这个的话,卸载

npm i hexo-renderer-markdown-it --save # 需要安装这个渲染插件
npm install katex @renbaoshuo/markdown-it-katex #需要安装这个katex插件

Algolia-搜索

请记得配置 fields 参数的 title, permalink 和 content。需要安裝 hexo-algolia或 hexo-algoliasearch。

algolia_search:
  enable: true
  hits:
    per_page: 6

Algolia-Doc搜索

需要注册,具体申请和使用请查看 DocSearch 文檔 ,前4个参数全是必须填写的,最后option可查看这里 |

docsearch:
  enable: false
  appId:
  apiKey:
  indexName:
  option:

local_search-本地搜索

需要安裝 hexo-generator-searchdb 或者 hexo-generator-search。

# Local search
local_search:
  enable: false
  # 预加载,开启后,进入网页后会自动加载搜索文件。关闭时,只有点击搜索按钮后,才会加载搜索文件
  preload: false
  # 匹配的文章结果,默认显示最开始的 1段结果
  top_n_per_article: 1
  # 将 html 字符串解码为可读字符串
  unescape: false
  # 搜索文件的 CDN 地址(默认使用的本地链接)
  CDN:

comments-评论

开启评论需要在comments-use中填写你需要的评论。支持双评论显示,只需要配置两个评论(第一个为默认显示),这个可选择就非常多了。通用配置如下:

comments:
  # 使用的评论(请注意,最多支持两个,如果不需要请留空),一般一个就行了
  # Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo
  use: Valine,Disqus
  # 是否显示评论服务商的名字
  text: true 
  # lazyload: 是否为评论开启lazyload,开启后,只有滚动到评论位置时才会加载评论所需要的资源(开启 lazyload 后,评论数将不显示)
  lazyload: true
  # 是否在文章顶部显示评论数,livere、Giscus 和 utterances 不支持评论数显示
  count: true 
  # 是否在首页文章卡片显示评论数gitalk、livere 、Giscus 和 utterances 不支持评论数显示
  card_post_count: false 

可选的服务插件

插件名称特点说明
disqus无法在内地使用
Disqusjs
livere
gitalkgithub提供的功能
valine
Waline一款从 Valine 衍生的带后端评论系统
utterances与Gitalk一样,基于 GitHub issues 的评论工具
Twikoo是一个简洁、安全、无后端的静态网站评论系统,基于腾讯云开发。
Giscus一个基于 GitHub Discussions 的评论
remark42只支持私有部署的评论
artalk只支持私有部署的评论

chat-在线聊天

Butterfly主题内置了多种在綫聊天工具,设置chat_btn: true。这个聊天按钮将会出现在右下角工具条里。

chat_btn: true # 显示工具条的聊天图标
chat_hide_show: true # 只有向上滚动才会显示聊天按钮
rightside-bottom: #如果使用工具自带的聊天按钮,按钮位置可能会遮挡右下角图标,调正右下角图标位置
工具名称配置名称网址
chatrachatra打开chatra并注册帐号。
tidiotidio打开tidio并注册帐号。
crispcrisp打开crisp并注册帐号。
daovoicedaovoice打开daovoice并注册帐号。

analytics-代码分析統計

工具名称配置说明
百度统计baidu_analytics登錄百度統計的官方網站
谷歌分析google_analytics登錄谷歌分析的官方網站
Cloudflarecloudflare_analytics登錄 Cloudflare 分析的官方網站
Claritymicrosoft_clarity登錄 Clarity 的官方網站

google_adsense-广告

主题已集成谷歌广告(自动广告)

google_adsense:
  enable: true
  auto_ads: true
  js: https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js
  client: # 填入個人识别码
  enable_page_level_ads: true

ad-手动广告配置

主题预留了三个位置可供插入广告,分别为主页文章(每三篇文章出现广告)/aside公告之后/文章页打赏之后。把html代码填写到下边配置的对应的位置。

ad:
  index: <ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-fb+5w+4e-db+86" data-ad-client="ca-pub-8919908724705274" data-ad-slot="1538867630"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script>
  aside: <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8919908724705274" data-ad-slot="8108145410" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script>
  post: <ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-fb+5w+4e-db+86" data-ad-client="ca-pub-8919908724705274" data-ad-slot="5978969231"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script>

例如:

  index: <ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="xxxxxxxxxxxx" data-ad-client="ca-pub-xxxxxxxxxx" data-ad-slot="xxxxxxxxxx"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script>

site_verification-网站验证平台收录

如果需要搜索引擎收录网站,需要登录对应搜索引擎的管理平台进行提交,各自的验证码可从各自管理平台拿到。

site_verification:
  # - name: google-site-verification
  #   content: xxxxxx
  # - name: baidu-site-verification
  #   content: xxxxxxx

Snackbar-弹窗

# https://github.com/polonel/SnackBar
# position 弹窗位置:top-left / top-center / top-right / bottom-left / bottom-center / bottom-right
snackbar:
  enable: true
  position: bottom-left
  bg_light: '#49b1f5' #light mode时弹窗背景
  bg_dark: '#2d3035' #dark mode时弹窗背景

二、性能提升插件

Pjax-提速资源缓存

当用户点击链接,通过ajax更新页面需要变化的部分,然后使用HTML5的pushState修改浏览器的URL地址。这样可以不用重复加载相同的资源(css/js), 从而提升网页的加载速度,对于一些第三方插件,有些并不支持 pjax 。你可以把网页加入到 exclude 里,这个网页会被 pjax 排除在外。

pjax: 
  enable: true
  exclude:
    - /music/
    - /no-pjax/

CDN-加速

配置文件中最後一部分CDN,裏面是主題所引用到的文件,可自行配置CDN。(非必要請勿修改,配置後請確認鏈接是否能訪問)

CDN:
  # The CDN provider of internal scripts (主題內部 js 的 cdn 配置)
  # option: local/jsdelivr/unpkg/cdnjs/custom
  # Dev version can only choose. ( dev版的主題只能設置為 local )
  # custom 为自定义格式,需配置 custom_format
  internal_provider: local

  # The CDN provider of third party scripts (第三方 js 的 cdn 配置)
  # option: local/jsdelivr/unpkg/cdnjs/custom
  # when set it to local, you need to install hexo-butterfly-extjs
  # custom 为自定义格式,需配置 custom_format
  third_party_provider: jsdelivr

  # Add version number to CDN, true or false  
  version: false

  # Custom format
  # For example: https://cdn.staticfile.org/${cdnjs_name}/${version}/${min_cdnjs_file}
  custom_format:

  option: #可以在这里更换部分文件,会覆盖原有的配置
    # main_css:
    # main:
    # utils:
    # translate:
    # local_search:
    # algolia_js:
    # algolia_search:
    # instantsearch:
    # docsearch_js:
    # docsearch_css:
    # pjax:
    # gitalk:
    # gitalk_css:
    # blueimp_md5:
    # valine:
    # disqusjs:
    # disqusjs_css:
    # twikoo:
    # waline_js:
    # waline_css:
    # giscus:
    # sharejs:
    # sharejs_css:
    # mathjax:
    # katex:
    # katex_copytex:
    # mermaid:
    # canvas_ribbon:
    # canvas_fluttering_ribbon:
    # canvas_nest:
    # lazyload:
    # instantpage:
    # typed:
    # pangu:
    # fancybox_css:
    # fancybox:
    # medium_zoom:
    # snackbar_css:
    # snackbar:
    # activate_power_mode:
    # fireworks:
    # click_heart:
    # ClickShowText:
    # fontawesome:
    # flickr_justified_gallery_js:
    # flickr_justified_gallery_css:
    # aplayer_css:
    # aplayer_js:
    # meting_js:
    # prismjs_js:
    # prismjs_lineNumber_js:
    # prismjs_autoloader:
    # artalk_js:
    # artalk_css:
    # busuanzi:
    # abcjs_basic_js:

version:如需修改版本號,可修改主題目录的 ‘plugins.yml’ 中對应插件的 version,请确保你修改的版本号,你所使用的 cdn 有收录;

custom_format提供以下参数

参数说明
namenpm 上的包名
filenpm 上的文件路徑
min_filenpm 上的文件路徑(壓縮過的文件)
cdnjs_namecdnjs 上的包名
cdnjs_filecdnjs 上的文件路徑
min_cdnjs_filecdnjs 上的文件路徑(壓縮過的文件)
version插件版本號

目前有收录butterfly使用的插件的可用的第三方 CDN 列表,选择新的 CDN 时需要确认有收录butterfly主题使用的第三方插件。

提供商格式備註
Staticfile(七牛云)https://cdn.staticfile.org/ c d n j s n a m e / {cdnjs_name}/ cdnjsname/{version}/${min_cdnjs_file}同步 cdnjs
BootCDNhttps://cdn.bootcdn.net/ajax/libs/ c d n j s n a m e / {cdnjs_name}/ cdnjsname/{version}/${min_cdnjs_file}同步 cdnjs
Baomitu(360)最新版本: https://lib.baomitu.com/ c d n j s n a m e / l a t e s t / {cdnjs_name}/latest/ cdnjsname/latest/{min_cdnjs_file}
指定版本: https://lib.baomitu.com/ c d n j s n a m e / {cdnjs_name}/ cdnjsname/{version}/${min_cdnjs_file}
同步 cdnjs
Elemecdn最新版本: https://npm.elemecdn.com/ n a m e @ l a t e s t / {name}@latest/ name@latest/{file}
指定版本: https://npm.elemecdn.com/ n a m e @ {name}@ name@{version}/${file}
同步 npm

三、推荐三方插件

permalink转为数字的插件

可以把链接permalink转为数字的插件,配置容易,生成时自动转为数字。也可解决解决中文URL问题。

  • hexo-abbrlink

生成RSS文件的插件

  • hexo-generator-feed

加强网站SEO和防止权重流失

为网站使用到的所有外链添加rel="noopener external nofollow noreferrer"

  • hexo-filter-nofollow

生成sitemap的插件

四、可选开启的三方插件

Open Graph - 自定义meta信息

head 里增加一些 meta 资料,例如缩略图、标题、时间等等。当你分享网页到一些平台时,平台会读取 Open Graph 的内容,展示缩略图,标题等等信息。

# Open graph meta tags
Open_Graph_meta:
  enable: true
  option:
    # twitter_card:
    # twitter_image:

douban-电影

电影界面使用了插件 hexo-butterfly-douban使用方法请参考插件的文檔。

  1. hexo-butterfly-douban 会主动生成页面,所以不需要自己创建。
  2. 如遇到无法抓取问题,只能重试。

日志-说说

一种类似随时发心情短blog的功能带时间线的,大概如下所示:
在这里插入图片描述

Artitalk

安装插件 hexo-butterfly-artitalk
文档说明插件文檔

HexoPlusPlus Talk

安裝插件 hexo-butterfly-hpptalk
文档说明插件文檔

五、不建议开启的插件

pwd-google渐进式WEB增强

渐进式增强WEB应用,是Google 在2016年提出的概念,2017年落地的web技术。是提升 Web App 的体验的一种新方法,能给用户原生应用的体验。可以参考 Google Tools for Web Developers

打开工作目录,npm install hexo-offline --save 或者 yarn add hexo-offline,然后在根目录创建 hexo-offline.config.cjs 文件,并增加以下内容:

// offline config passed to workbox-build.
module.exports = {
  globPatterns: ['**/*.{js,html,css,png,jpg,gif,svg,webp,eot,ttf,woff,woff2}'],
  // 静态文件合集,如果你的站点使用了例如 webp 格式的文件,请将文件类型添加进去。
  globDirectory: 'public',
  swDest: 'public/service-worker.js',
  maximumFileSizeToCacheInBytes: 10485760, // 缓存的最大文件大小,以字节为单位。
  skipWaiting: true,
  clientsClaim: true,
  runtimeCaching: [ // 如果你需要加载 CDN 资源,请配置该选项,如果没有,可以不配置。
    // CDNs - should be CacheFirst, since they should be used specific versions so should not change
    {
      urlPattern: /^https:\/\/cdn\.example\.com\/.*/, // 可替换成你的 URL
      handler: 'CacheFirst'
    }
  ]
}

然后修改配置文件:

pwa:
  enable: true
  manifest: /img/pwa/manifest.json
  apple_touch_icon: /img/pwa/apple-touch-icon.png
  favicon_32_32: /img/pwa/32.png
  favicon_16_16: /img/pwa/16.png
  mask_icon: /img/pwa/safari-pinned-tab.svg

在创建source/目录中创建manifest.json文件,可以通过 Web App Manifest快速创建manifest.json。

{
    "name": "string",
    "short_name": "Junzhou",
    "theme_color": "#49b1f5",
    "background_color": "#49b1f5",
    "display": "standalone",
    "scope": "/",
    "start_url": "/",
    "icons": [
        {
          "src": "images/pwaicons/36.png",
          "sizes": "36x36",
          "type": "image/png"
        },
        {
            "src": "images/pwaicons/48.png",
          "sizes": "48x48",
          "type": "image/png"
        }
      ],
      "splash_pages": null
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# NX二次开发:通过UFUN函数获取刀具描述,目录号,库号等信息

今天要将的是&#xff0c;在NX中对CAM模块进行二次开发的时候&#xff0c;往往需要获取一些关于刀具使用的信息&#xff0c;这些信息用NXOPEN的的方法录制也可以录制出来&#xff0c;但是录制出来的代码&#xff0c;往往都是一种刀具类型会出现一个Builder。这样在你不知道有多…

淘宝买家订单API

目录 下载安装与运行 支持的订单读取方式 请求数据格式一 请求头示例 数据格式说明 数据格式示例 返回数据格式一 返回头示例 数据格式说明 数据格式示例 请求数据格式二&#xff08;根据订单编号&#xff09; 请求头示例 返回数据格式二&#xff08;根据订单编号…

【随笔记】如何获得铁粉(仅供参考)

文章目录 一、前言二、秘籍2.1 良好的个人简介2.2 统一的文章格式2.3 详细的专栏划分2.4 有序的博客排版2.4.1 目录部分2.4.2 正文部分2.4.2.1 标题分级2.4.2.2 正文分段2.4.2.3 善用多级列表2.4.2.4 章节分割 三、总结 一、前言 在这篇随笔记的开始&#xff0c;我想声明一下&a…

ChatGPT将改变教育,而不是摧毁它

01 学校和大学的反应迅速而果断 就在 OpenAI 于 2022 年 11月下旬发布ChatGPT 的几天后&#xff0c;该聊天机器人被广泛谴责为一种免费的论文写作、应试工具&#xff0c;它很容易在作业中作弊。 美国第二大学区洛杉矶联合大学立即阻止了OpenAI网站从其学校网络访问。其他人很…

【Java】Java核心要点总结 67

文章目录 1. 浮点数运运算会有精度损失2. 构造方法特点 & 不能被重写3. 接口和抽象类的异同4. Object 类的常见方法5. hashCode() 有什么用 为什么要有 hashCode() 1. 浮点数运运算会有精度损失 这个和计算机保存浮点数的机制有很大关系。我们知道计算机是二进制的&#x…

面试时一定要确认该岗位的直属领导是否在场,如果不在,千万不要接offer,有坑!...

对于有心人来说&#xff0c;面试时可以看出许多隐形信息&#xff0c;比如下面这位网友的提醒&#xff1a; 面试时一定要确认这个岗位的直接汇报领导是否参与了面试&#xff0c;如果没有参与&#xff0c;千万不要接offer&#xff01; 该职位的直接领导不参与面试&#xff0c;只能…

NLP——Topic Modelling

文章目录 A Brief History of Topic ModelsLatent Dirichlet Allocation &#xff08;LDA&#xff09;潜在狄利克雷分布核心思想LDA inputLDA output LDA 如何学习Sampling-based mothods 基于采样的方法Infer Topics For New Documents超参数 Variational methods 变分方法 Ev…

java协同过滤算法的校园二手图书网站springboot vue

用户&#xff1a;&#xff08;商品推荐算法&#xff09; 1)首页主要由导航栏、图书展示页、分页所组成。访客能浏览网站上的待出售图书的信息&#xff0c;但是若要购买&#xff0c;收藏图书&#xff0c;查看卖家信息则会自动跳转到登录界面&#xff0c;已经登录的用户则可以浏…

WPS AI最全申请与使用手册;AIGC制作游戏音乐;便宜快捷使用完整版SD;人人都能看懂的ChatGPT原理课 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 面向虚拟世界的生成式AI市场全景图 作者在这篇文章中探讨了生成式AI在虚拟世界的应用&#xff0c;并绘制了 Market Map V3.0 (市场全景…

C++ 有用的资源||19道必须掌握的C++面试题

C 有用的资源 C 有用的资源 以下资源包含了 C 有关的网站、书籍和文章。请使用它们来进一步学习 C 的知识。 C 有用的网站 C Programming Language Tutorials − C 编程语言教程。C Programming − 这本书涵盖了 C 语言编程、软件交互设计、C 语言的现实生活应用。C FAQ −…

chatgpt赋能python:Python中的遍历方法详解

Python中的遍历方法详解 在Python中&#xff0c;遍历是处理数据的常见操作。Python提供了多种遍历方法&#xff0c;本文将逐一介绍这些方法的特点、适用场景及使用方法。 for循环 for循环是Python中最常用的遍历方法之一&#xff0c;可以遍历任何可迭代对象。 # 遍历列表 f…

栈的运用——中缀表达式[Java实现]

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现&#xff0c;有时候有C/C代码。 ⭐如果觉得文章写的…

C++【位图/布隆过滤器—海量数据处理】

文章目录 一、位图&#xff08;1&#xff09;位图概念介绍&#xff08;2&#xff09;简单模拟实现&#xff08;3&#xff09;位图应用 二、布隆过滤器&#xff08;1&#xff09;关于布隆过滤器概念及介绍&#xff08;2&#xff09;布隆过滤器的使用场景&#xff08;3&#xff0…

干翻Mybatis源码系列之第十一篇:Mybatis拦截器获取被拦截对象的方法和参数

给自己的每日一句 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽…

DJ4-1 网络层概述

目录 一、网络层提供的功能 二、路由和转发 三、数据平面和控制平面 四、网络层的服务模型 一、网络层提供的功能 网络层实现主机与主机之间的通信 从发送方主机传输报文段到接收方主机&#xff1a; 发送方主机封装报文段 (segments) 为数据报 (datagrams)接收方主机递交…

Linux常用命令——gcov命令

在线Linux命令查询工具 gcov 测试程序的代码覆盖率的工具 补充说明 gcov命令是一款测试程序的代码覆盖率的工具。 语法 gcov(选项)(参数)选项 -h&#xff1a;显示帮助信息&#xff1b; -v&#xff1a;显示版本信息&#xff1b; -a&#xff1a;输出所有的基本块的执行计数…

SpringMVC 中的常用注解和用法

观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 电脑使用的操作系统版本为 Windows 10 目录 前言 Spring Boot Spring MVC 1. MVC 1.1 MVC 和 Spring MVC 之间的关系 2. 创建 Spring MVC 项目 创建一个 SpringMVC 项目 1. new projec…

PyQt学习笔记-使用通用数据库接口QtSql操作SQLite数据库

使用通用的数据库接口的好处是当数据库发生改变时&#xff0c;只需要修改初始化的配置即可&#xff0c;而不用修改对应的更多的代码。 一、QtSql类 QtSql类时的数据库操作接口类&#xff0c;包含如下类&#xff1a; QSql QSqlError QSqlQueryModel QSqlRelationalTableMo…

SQL基础入门-条件查询语句

前言 可以关注我的云原生社区&#xff1a;云原生社区 也可以关注我的英语社区&#xff1a;从零开始学英语 一. 创建数据库并写入数据 1.1 创建数据库 MySQL [school]> create database game; Query OK, 1 row affected (0.01 sec)MySQL [school]> use game Database c…

[PyTorch][chapter 40][CIFAR-10 数据集]

前言&#xff1a; CIFAR-10和CIFAR-100是8000万个微小图像数据集的标记子集。它们由Alex Krizhevsky、Vinod Nair和Geoffrey Hinto收集 目录&#xff1a; CIFAR-10数据集简介 在线下载方式 离线下载方式 一 CIFAR-10数据集简介 CIFAR-10数据集由10个类别的60000张32x32…