Hexo博客私有部署Twikoo评论系统并迁移评论记录(自定义邮件回复模板)

部署

之前一直使用的artalk,现在想改用Twikoo,采用私有部署的方式。

私有部署 (Docker)

端口可以根据实际情况进行修改

docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8100:8100 -v ${PWD}/data:/app/data -e TWIKOO_PORT=8100 -d imaegoo/twikoo

访问localhost:8100,结果如下则表示部署成功

{"code": 100,"message": "Twikoo 云函数运行正常,请参考 https://twikoo.js.org/frontend.html 完成前端的配置","version": "1.6.39"
}

成功后,如果有域名,使用nginx配置反向代理即可。

Butterfly配置

打开butterfly的主题配置文件_config.yml,启用Twikoo

comments:# Up to two comments system, the first will be shown as default# Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/Artalkuse: Twikootext: true # Display the comment name next to the button# lazyload: The comment system will be load when comment element enters the browser's viewport.# If you set it to true, the comment count will be invalidlazyload: falsecount: false # Display comment count in post's top_imgcard_post_count: false # Display comment count in Home Page

配置环境Id,环境Id就是上一步你访问的地址。

# Twikoo
# https://github.com/imaegoo/twikoo
twikoo:envId: https://twikoo.xxx.xxxregion:visitor: falseoption:

如果Twikoo前端版本过低,打开themes/butterfly/plugins.yml配置文件,修改版本。

twikoo:name: twikoofile: dist/twikoo.all.min.jsversion: 1.6.39

然后Hexo一键三连

Twikoo配置

在你的评论区,点击右下角设置小图片,初始化密码后,就可以进行配置啦!
在这里插入图片描述

迁移评论

首先从原来的评论系统,将评论数据导出,artalk导出是artrans格式。
然后在Twikoo设置中,选择导入,导入数据。
在这里插入图片描述
详细配置可参照Twikoo 文档

自定义邮件样式

PC端和移动端效果

邮件模板代码

网站图标更改为你自己网站图标图片的url地址。

<div class="page flex-col"><div class="box_3 flex-col" style="display: flex;position: relative;width: 100%;height: 206px;background: #49BDAD;color: #ffffff;border-radius: 10px 10px 0 0;background-image: -moz-linear-gradient(0deg, rgb(67, 198, 184), rgb(255, 209, 244));background-image: -webkit-linear-gradient(0deg, rgb(67, 198, 184), rgb(255, 209, 244));top: 0;left: 0;justify-content: center;
"><div class="section_1 flex-col" style="background-image: url(&quot;网站图标&quot;);position: absolute;border-radius: 50%;width: 152px;height: 152px;display: flex;top: 130px;background-size: cover;
"></div></div><div class="box_4 flex-col" style="margin-top: 92px;display: flex;flex-direction: column;align-items: center;
"><div class="text-group_5 flex-col justify-between" style="display: flex;flex-direction: column;align-items: center;margin: 0 20px;
"><span class="text_1" style="font-size: 26px;font-family: PingFang-SC-Bold, PingFang-SC;font-weight: bold;color: #000000;line-height: 37px;text-align: center;
">嘿!你在&nbsp;${SITE_NAME}&nbsp;博客中收到一条新回复。</span><span class="text_2" style="font-size: 16px;font-family: PingFang-SC-Bold, PingFang-SC;font-weight: bold;color: #00000030;line-height: 22px;margin-top: 21px;text-align: center;
">你之前的评论&nbsp;&nbsp;${SITE_NAME} 博客中收到来自&nbsp;${NICK}&nbsp;的回复</span></div><div class="box_2 flex-row" style="margin: 0 20px;min-height: 128px;background: #F7F7F7;border-radius: 12px;margin-top: 34px;display: flex;flex-direction: column;align-items: flex-start;padding: 32px 16px;width: 80%;
"><div class="text-wrapper_4 flex-col justify-between" style="display: flex;flex-direction: column;margin-left: 30px;margin-bottom: 16px;
"><span class="text_3" style="height: 22px;font-size: 16px;font-family: PingFang-SC-Bold, PingFang-SC;font-weight: bold;color: #C5343E;line-height: 22px;
">${PARENT_NICK}</span><span class="text_4" style="margin-top: 6px;margin-right: 22px;font-size: 16px;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;color: #000000;line-height: 22px;
">${PARENT_COMMENT}</span></div><hr style="display: flex;position: relative;border: 1px dashed #ef859d2e;box-sizing: content-box;height: 0px;overflow: visible;width: 100%;
"><div class="text-wrapper_4 flex-col justify-between" style="display: flex;flex-direction: column;margin-left: 30px;margin-top: 26px;
"><span class="text_3" style="height: 22px;font-size: 16px;font-family: PingFang-SC-Bold, PingFang-SC;font-weight: bold;color: #C5343E;line-height: 22px;
">${NICK}</span><span class="text_4" style="margin-top: 6px;margin-right: 22px;font-size: 16px;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;color: #000000;line-height: 22px;
">${COMMENT}</span></div><a class="text-wrapper_2 flex-col" style="min-width: 106px;height: 38px;background: #ef859d38;border-radius: 32px;display: flex;align-items: center;justify-content: center;text-decoration: none;margin: auto;margin-top: 32px;
" href="${POST_URL}"><span class="text_5" style="color: #DB214B;
">查看详情</span></a></div><div class="text-group_6 flex-col justify-between" style="display: flex;flex-direction: column;align-items: center;margin-top: 34px;
"><span class="text_6" style="height: 17px;font-size: 12px;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;color: #00000045;line-height: 17px;
">此邮件由评论服务自动发出,直接回复无效。</span>
<span class="text_6" style="
margin-top: 5px;
height: 17px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
line-height: 17px;">欢迎再次光临 <a class="text_7" style="height: 17px;font-size: 12px;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;color: #4131d2;line-height: 17px;margin-top: 6px;text-decoration: none;
" href="${SITE_URL}">${SITE_NAME}</a>
</span></div></div>
</div>

Twikoo邮件模板配置

打开Twikoo管理面板,将代码复制到配置管理-邮件通知下的MAIL_TEMPLATE
在这里插入图片描述

Twikoo邮件自定义字段

参数含义
${SITE_URL}网站链接
${SITE_NAME}网站名字
${PARENT_NICK}被回复人昵称
${PARENT_COMMENT}被回复人的评论内容
${NICK}回复人昵称
${COMMENT}回复人评论内容
${POST_URL}文章链接
${IMG}回复人头像
${PARENT_IMG}被回复人头像
${MAIL}回复人邮件
${IP}回复人 IP 地址

大功告成

此模版参考于「Twikoo评论回复邮件模板:Acrylic Mail 粉」。

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

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

相关文章

LabVIEW编程能力如何能突飞猛进

要想让LabVIEW编程能力实现突飞猛进&#xff0c;需要采取系统化的学习方法&#xff0c;并结合实际项目进行不断的实践。以下是一些提高LabVIEW编程能力的关键策略&#xff1a; 1. 扎实掌握基础 LabVIEW的编程本质与其他编程语言不同&#xff0c;它是基于图形化的编程方式&…

nethogs显示每个进程所使用的带宽

1、安装nethogs&#xff1a; Ubuntu、Debian和Fedora用户可以从默认软件库获得。CentOS用户则需要Epel。 #ubuntu或debian安装方法 sudo apt-get install nethogs #fedroa或centos安装法 sudo yum install nethogs -y 2、使用测试 nethogs是一款小巧的"net top&quo…

开源项目还需要花钱吗

开源和免费并不完全等同&#xff0c;很多用户对开源软件是否真的不花钱存在误解。本文深入探讨开源的真正含义、开源项目是否需要付费、以及开源软件的盈利模式。通过分析国内外主流开源平台&#xff0c;我们将帮助读者更好地理解开源与免费之间的区别。 什么是开源 开源软件指…

增强现实系列—GaussianAvatars: Photorealistic Head Avatar

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

【ollama】ollama配置本地大模型并运行

ollama的Github链接 https://github.com/ollama/ollamaollama官网链接 https://ollama.com/打开后点击下载 下载完成后进行安装&#xff0c;安装完毕后在终端输入以下&#xff0c;代表安装成功 ollama在ollama官网的模型库中找到需要的模型&#xff0c;这里使用阿里最新开源…

ZYNQ FPGA自学笔记~操作PLL

一 时钟缓冲器、管理和路由 垂直时钟中心&#xff08;clock backbone&#xff09;将设备分为相邻的左侧和右侧区域&#xff0c;水平中心线将设备分为顶部和底部两侧。clock backbone中的资源镜像到水平相邻区域的两侧&#xff0c;从而将某些时钟资源扩展到水平相邻区域。BUFG不…

JavaWeb---三层架构

文章目录 1. 为什么需要分层&#xff1f;2.软件设计中的分层模式3.分层4.三层架构&#xff1a;显示层、业务逻辑层、数据访问层3. 案例&#xff1a;利用三层架构原理实现编写web程序的流程 摘自&#xff1a;https://blog.csdn.net/qq_64001795/article/details/124112824 1. 为…

死锁(详解版)

一、什么是死锁 死锁就是多个线程在运行过程中&#xff0c;都需要获取对方线程所持有的锁&#xff08;资源&#xff09;&#xff0c;导致处于长期无限等待的状态。 二、死锁产生原因 两个线程各自持有不同的锁&#xff0c;然后试图获取对方线程的锁&#xff0c;造成双方无限等待…

聊城网站建设:企业如何打造高效官网

聊城网站建设&#xff1a;企业如何打造高效官网 在互联网飞速发展的今天&#xff0c;官方网站已成为企业展示形象、推广产品、与客户沟通的重要平台。尤其对于聊城地区的企业来说&#xff0c;建立一个高效的官网显得尤为重要。本文将分享一些关键步骤&#xff0c;帮助企业打造一…

如何在Mac上查看剪贴板历史记录

重点摘要 macOS 内建的剪贴簿查看器可以透过 Finder 存取,但只能显示最近一次复制的内容,而且重新开机后就会清除。若要更进阶的剪贴簿管理,第三方 app 像是 CleanClip 提供了强大的功能和更好的组织方式。CleanClip 提供了全方位的剪贴簿历史管理解决方案,支援各种内容类型和…

书客、柏曼、明基护眼台灯怎么样?实测三款热门护眼台灯推荐

随着市场上照明产品种类的日益丰富&#xff0c;从护眼台灯到护眼落地灯等各种选择足以让初次接触的宝妈们感到困惑&#xff0c;仿佛置身于一个复杂的选择迷宫。为了帮助大家筛选出真正优质的护眼灯&#xff0c;作为一位长期关注护眼照明领域的评测博主&#xff0c;我综合考虑了…

Swift里的数值变量的最大值和最小值

Swift里有很多种数值变量&#xff0c;如Int&#xff0c;Int8&#xff0c;Float&#xff0c;Double等。和绝大多数编程语言一样&#xff0c;由于是在计算机上运行&#xff0c;内存有限&#xff0c;所以必有最大值和最小值&#xff0c;而计算机无法处理超过该值的数。 在Swift中…

Unity 3D 概览一口气讲完!\(@^0^@)/

PS:好久没做Unity内容了&#xff0c;先做个合集凑合看着吧。。谢啦!!☆⌒(*&#xff3e;-゜)v Unity 3D 简介 Unity 3D 也称 Unity&#xff0c;是由 Unity Technologies 公司开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综…

AI大模型站在十字路口,持续突破or陷入低谷?

文&#xff5c;白 鸽 编&#xff5c;王一粟 当普通人被AI轰炸的已经疲劳&#xff0c;应用落地也没有惊人地突破&#xff0c;AI大模型的发展似乎已经进入瓶颈期。 在云栖大会之前&#xff0c;业界弥漫着对AI的唱衰&#xff0c;似乎又到了一个历史的转折点。如2017年上一代深度…

MySQL的索引——提高查找算法的数据结构 B+树

我们MYSQL服务器是在内存中的&#xff0c;所以所有的操作也是内存级的&#xff0c;索引也是如此 我们要提高算法的效率&#xff1a;首先要用一个好的数据存储结构储存数据&#xff0c;然后结构决定算法 所以——索引的本质就是一种提高算法效率组织的数据结构 缩印的主要价值体…

如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件

创建一个 Chrome 插件是一个有趣的项目&#xff0c;特别是当结合使用强大的工具如 React、TypeScript、TailwindCSS 和 Vite 时 在这篇文章中&#xff0c;我们将逐步引导完成整个过程&#xff0c;了解如何在 2024 年构建自己的 Chrome 插件。无论是经验丰富的开发者还是刚刚起…

Kafka 为什么这么快?

Kafka 是一款性能非常优秀的消息队列&#xff0c;每秒处理的消息体量可以达到千万级别。今天来聊一聊 Kafka 高性能背后的技术原理。 1 批量发送 Kafka 收发消息都是批量进行处理的。我们看一下 Kafka 生产者发送消息的代码&#xff1a; private Future<RecordMetadata>…

Mysql进阶——1

一.MySQL程序简介 本章介绍 MySQL 命令⾏程序以及在运⾏这些程序时指定选项的⼀般语法。 对常⽤程序进⾏详细的讲解&#xff0c;包括它们的选项。 MySQL安装完成通常会包含如下程序&#xff1a; • Linux系统程序⼀般在 /usr/bin⽬录下&#xff0c;可以通过命令查看&#x…

MySQL篇(索引)(持续更新迭代)

目录 一、简介 二、有无索引情况 1. 无索引情况 2. 有索引情况 3. 优劣势 三、索引结构 1. 简介 2. 存储引擎对于索引结构的支持情况 3. 为什么InnoDB默认的索引结构是Btree而不是其它树 3.1. 二叉树&#xff08;BinaryTree&#xff09; 3.2. 红黑树&#xff08;RB&a…

让模型评估模型:构建双代理RAG评估系统的步骤解析

在当前大语言模型(LLM)应用开发的背景下,一个关键问题是如何评估模型输出的准确性。我们需要确定哪些评估指标能够有效衡量提示(prompt)的效果,以及在多大程度上需要对提示进行优化。 为解决这一问题,我们将介绍一个基于双代理的RAG(检索增强生成)评估系统。该系统使用生成代理…