給你的博客加上評論區

一個網站如果有評論功能,可以更好的和讀者互動。VuePress 也有很多評論插件,這里簡單介紹下,最后介紹本站所使用的 Twikoo。

大部分評論插件都是使用的 Github 或 Gitee 的 issue 功能,也就是用 issue 去存儲評論;而 Twikoo 則是將數據保存到本地。

?

?

常見的評論區插件

Vssue:Vssue 簡單來說就是 VuePress + issue,專門用來 VuePress 的評論功能。博主曾嘗試過,但好像和其他插件沖突了,這里不詳述。想要使用請參考:

  • Vssue 官網:https://vssue.js.org/zh/guide/
  • GitTalk :https://github.com/gitalk/gitalk
  • Gitment:https://imsun.net/posts/gitment-introduction/
  • Valine:https://valine.js.org/
  • ArtTalk:https://wiki.eryajf.net/pages/b74c2b/

?

由于本文采用的是 Twikoo,因此著重講下其怎么配置。

Twikoo 的安裝

官網:https://twikoo.js.org

Twikoo 支持多種部署方式:云函數,Vercel,私有部署、Docker… 具體參見文檔:https://twikoo.js.org/backend.html

?

最原始的方法,也就是直接在服務器上部署,步驟很簡單:安裝 node → 安裝 tkserver → 啟動。

$ npm i -g tkserver$ ln -s /opt/nodejs/node/bin/tkserver /usr/local/bin/tkserver$ tkserver

?

然后就可以訪問了,地址是:http://服務端IP:8080?

?

Linux 服務器可以用 nohup tkserver >> tkserver.log 2>&1 &? 命令后臺啟動。

注意:可能需要在云服務器上開啟 8080 端口的防火墻

?

還是推薦用 Docker 來部署。我之前是用私有部署,幾年后想升級 Twikoo,但是因為 node 版本太老了,導致升級失敗… 然后試著升級 node,又是一堆報錯…

當時的聊天記錄?

?

?

?

?

聽群友的 鬼話 建議后,用 Docker 后,一個命令就啟動起來了,真香!

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

?

Twikoo 目錄結構

在私有部署的情況下,在你執行 tkserver 的時候,就會在當前目錄創建:

  • data 文件夾:存放評論數據、配置等
  • tkserver.log:日志文件

?

因此,有必要在你自己指定的目錄下啟動 tkserver,方便后期的數據備份、日志分析等。

如果你使用的是 Docker,在上述命令里其實也用了 ${PWD}/data? 來指定數據文件的目錄,請自行選擇。

?

?

?

配置 https

理論上這樣部署,就完成后臺的部分了,但鑒于我的網站用了 HTTPS,而 Twikoo 本身并不支持,因此還需要做反向代理。

接下來的步驟如下:

  1. 再申請和購買一個 SSL 證書
  2. 配置 cname
  3. 下載證書放到 Linux 服務器上
  4. 配置 Nginx 反向代理

?

購買 HTTPS 證書,這里我用二級域名的:

?

?

然后在云服務器控制臺上配置 cname:

??

?

?

配置 Nginx 反向代理。和上一小節一樣,上傳子域名的證書到服務器上,然后配置 Nginx:

upstream twi { server peterjxl.com:8080; #你的域名+加端口
}server {listen  443 ssl;server_name  twikoo.peterjxl.com; #子域名ssl_certificate  /opt/nginxrun/conf/cert/8852603_twikoo.peterjxl.com.pem;ssl_certificate_key /opt/nginxrun/conf/cert/8852603_twikoo.peterjxl.com.key;# ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;ssl_prefer_server_ciphers  on;location / {proxy_pass http://twi;}
}

?

?

這樣,訪問 https://twikoo.peterjxl.com/,就會轉發到我的服務器 IP:8080 ,完成反向代理:

?

?

前端配置 Twikoo

這里主要參考:本站 - 評論模塊 | Young Kbt blog,感謝大佬。

?

打開 docs/.vuepress/config.js,在 head 里添加如下內容(在 <head>? 引入在線 script):1.6.7 是版本號。

['script', { src: 'https://cdn.staticfile.org/twikoo/1.6.7/twikoo.all.min.js' }],

docs/.vuepress/components? 目錄下創建 Vue 組件:Twikoo.vue?。如果不存在 components 目錄,則請創建。添加如下內容:注意修改 envId? 為你自己的

ps:envId 就是你自己的 Twikoo 地址,例如我的是 https://twikoo.peterjxl.com/

<template><div id="tcomment"></div>
</template>
<script>
let waitTime = 700; // 頁面加載后多少毫秒后加載評論區(如果是 0ms,可能會報錯)
let archives = "/archives/"; // 歸檔頁的 permalink
export default {data() {return {twikoo: "",firstLoad: true,};},mounted() {// 不初始化評論區的頁面:frontmatter 的 comment: false 的文章頁、首頁、歸檔頁、404 頁面if ((this.$frontmatter.comment == undefined || this.$frontmatter.comment) &&this.$route.path != "/" &&this.$route.path != archives &&!this.isFourZeroFour(this.$route)) {setTimeout(() => {this.twikooInit();}, waitTime);}},watch: {$route(to, from) {// 404 頁面、不同的標題會觸發路由,禁止掉if (this.$route.path == "/" ||this.$route.hash != "" ||this.isFourZeroFour(to)) {return;}// 進入首頁、進入 frontmatter 的 comment: false 頁面,刪除評論區if (to.path == "/" || this.getCommentByFrontmatter(to) == false) {this.deleteComment();return;}// 初始化評論條件:來自首頁,來自歸檔頁、來自 frontmatter 的 comment: true 的文章頁if (from.path == "/" ||from.path == archives ||!this.getCommentByFrontmatter(from)) {this.firstLoad? setTimeout(() => {this.twikooInit();this.firstLoad = false;}, waitTime): this.twikooInit(); // 如果加載過一次評論區,則直接獲取} else if (this.$route.path != "/" && this.$route.hash == "") {// 文章頁之間跳轉,重新獲取評論setTimeout(() => {this.updateComment();}, waitTime);}},},methods: {twikooInit() {twikoo.init({// envId 要切換成自己的,這是評論區的 ID,一個博客只能有一個評論區 ID,用別人的評論區 ID,導致讀者評論時或發送到別人的評論區里envId: "https://twikoo.peterjxl.com/",el: "#tcomment",// region: 'ap-guangzhou', // 環境地域,默認為 ap-shanghai,如果您的環境地域不是上海,需傳此參數// path: 'window.location.pathname', // 用于區分不同文章的自定義 js 路徑,如果您的文章路徑不是 location.pathname,需傳此參數// lang: 'zh-CN', // 用于手動設定評論區語言,支持的語言列表 https://github.com/imaegoo/twikoo/blob/dev/src/js/utils/i18n/index.js// onCommentLoaded: function () {// console.log("評論加載或評論成功");// },}).then(() => {this.loadTwikoo();});},// 初始化加載或者跳轉新頁面重新加載 Twikoo 評論區loadTwikoo() {let page = document.getElementsByClassName("page")[0];let comment = document.getElementById("twikoo");// comment 不存在代表曾初始化過,后面被刪除comment ? (this.twikoo = comment) : (comment = this.twikoo);page? comment? page.appendChild(comment): page.appendChild(this.twikoo): "";this.updateComment();},// 跳轉新頁面,重新獲取當前頁面的評論信息updateComment() {let tk_icon = document.getElementsByClassName("tk-icon")[0];tk_icon ? tk_icon.click() : undefined;},// 刪除 frontmatter:comment: false 頁面的數據deleteComment() {let comment = document.getElementById("twikoo");comment ? comment.parentNode.removeChild(comment) : "";},// 獲取 frontmatter 的 commentgetCommentByFrontmatter(route) {let comment = true;this.$site.pages.forEach((item) => {if (item.path == route.path) {comment = item.frontmatter.comment;}});return comment;},// 判定當前頁面是不是 404isFourZeroFour(route) {let flag = true;this.$site.pages.forEach((item) => {if (item.path == route.path) {flag = false;}});return flag;},},
};
</script><style>
.twikoo .tk-comments {margin-top: 20px;
}
</style>

?

?

管理 Twikoo

配置好后,就可以在每個文章下面看到評論區,在評論區的右邊發現有一個「藍色小齒輪」,這就是管理面板:

?

第一次 點擊小齒輪后會讓你輸入登錄密碼,請記住它,如果忘記了密碼,請參考官網文檔解決。

管理面板的用處:

  • 可以查看、刪除、隱藏、顯示、置頂任意的評論
  • 配置你的個人信息,登錄管理面板后評論系統能識別你的身份(博主)
  • 配置反垃圾模塊,防止別人發送不雅的評論
  • 配置通知,別人的評論可以通過 郵件 / 微信 / QQ 等方式通知你

image?

?

?

反垃圾

騰訊云是提供了反垃圾評論服務的,提供 1 個月的免費試用,到期后選擇后付費即可,25 元/萬條。

注意不要購買套餐,非常貴,最少都是 4k 大洋的,180w 條,大部分網站用不著這么多。

控制臺地址:https://console.cloud.tencent.com/cms/text/package

?

?

然后我們配置反垃圾,輸入獲取到的 secret id:

?

?

?

?

通知

如何知道有人給網站評論了呢?我們可以使用郵件通知、即時通知。

?

可以在管理面板里開啟郵件通知。如果使用的是 QQ 郵箱,則需要授權碼,而不是 QQ 密碼,QQ 郵箱這樣的設計可能是為了防止 QQ 被盜吧?具體步驟可參考:qq 郵箱授權碼如何獲取-百度經驗 (如果是其他郵件,同理):

?

?

配置完后,可以測試下能不能正常收到郵件:

?

?

?

效果:當有評論后會有郵件提醒:

?

?

?

即時通知:Twikoo 支持多種即時通知,QQ,微信,釘釘,telegram 等等,自行按需配置即可:

?

?

關于顯示頭像

Twikoo 評論區還支持 Gravatar 頭像:

?

?

什么是 Gravatar?簡單來說就是全球通用頭像,只要你去 Gravatar 的網站上設置一個郵箱和頭像,這樣在其他支持 Gravatar 的網站上,你輸入郵箱就能自動獲取你的頭像。讀者可以去 https://cravatar.cn 上注冊郵箱,然后就可以了(由于 CDN 緩存的問題,可能得過幾個小時才能正常顯示)。

?

Twikoo 也提供了自定義頭像 CDN 地址的功能,具體可以看官網文檔:

?

?

關于顯示 IP

在設置后有相關的部分:

?

?

注意,并不會顯示 IP,而是顯示省份,有些人會誤以為后面顯示的是 IP,其實是瀏覽器版本:

?

?

關于顯示語言

Twikoo 支持簡體中文、繁體中文、English。此外歡迎 提交翻譯 PR。

至于管理面板顯示什么語言,得看瀏覽器使用的語言了:

?

?

關于博主標識

?

如果是博主,在發表評論時會有一個“博主”標識:

?

注意,發表評論時,用戶昵稱和郵箱得和配置的一樣,否則是沒有這個標識的。

?

也可以自定義這個標識:

?

?

?

?

數據導出和定期備份

Twikoo 也支持數據的導入/導出,數據格式為 JSON。

如果想要自動定期備份,可以參考這篇博客:使用 GitHub Actions 自動備份 Twikoo 評論數據 | 小嘉的部落格

?

更新 Twikoo

具體參考官網文檔:版本更新 | Twikoo 文檔

注意,前端的 JS 文件也要更新,直接修改版本號即可,例如本例中用的是:

['script', { src: 'https://cdn.staticfile.org/twikoo/1.6.7/twikoo.all.min.js' }],

更新為:

['script', { src: 'https://cdn.staticfile.org/twikoo/1.6.38/twikoo.all.min.js' }],

小結

本人使用過幾個評論區插件, 但都配置失敗了,折騰了很久都不行,最后還是用了 Twikoo,并且配置的過程中還加進了 Twikoo 的 QQ 群去咨詢,也是折騰了很久才可以。

如果讀者配置的過程遇到了什么問題,請不要灰心,遇到問題就盡量去解決,總是能成功的。

注意事項:

  • 每個頁面加載評論區的時候,使用了 JS 的document.getElementById("twikoo")? 方法來加載評論區(參考剛剛的“前端配置 Twikoo”小節)
  • 所以,在寫博客的時候,文章的標題請不要取成單獨的“Twikoo”,這樣會導致評論區樣式混亂。
  • 例如,本博客的小標題都不是單獨的“Twikoo”,而是諸如“Twikoo 的安裝”、“Twikoo 的目錄結構”之類的。

?

?

?

?

?

參考

  • Twikoo 私有化部署 - 騰訊云開發者社區-騰訊云
  • 常見問題 | Twikoo 文檔
  • 本站 - 評論模塊 | Young Kbt blog
  • 設置郵箱頭像方法,gravatar 頭像設置 - EzraYes 博客

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43004.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自然語言處理(NLP)與大語言模型(LLM) 主要差異

一、簡述 NLP 和 LLM 技術是大規模分析和生成人類語言的核心。隨著它們的日益普及&#xff0c;區分 LLM 與 NLP 變得越來越重要。 NLP 包含一套用于理解、操縱和生成人類語言的算法。自 20 世紀 50 年代誕生以來&#xff0c;NLP 已發展到分析文本關系的階段。它使用詞性標注、命…

腳本實現保留文本中特定字符之后的字符串

#目的背景 原始txt文本如下圖 目的是為了去除序號&#xff0c;每行只單獨呈現域名 手工刪除漫長又麻煩&#xff0c;使用腳本快捷些 代碼實現邏輯&#xff1a; 1.使用open函數打開文本&#xff0c;之后用變量lines存儲文本的所有行&#xff0c;使用for循環&#xff0c;讓變量te…

暑假學習計劃怎么做 用待辦計劃軟件安排更科學

暑期來臨&#xff0c;無論是學生還是老師&#xff0c;做好暑期計劃都至關重要。記得去年暑假&#xff0c;我給自己定下了閱讀十本書的目標&#xff0c;卻因為缺乏明確的計劃&#xff0c;最后只草草讀完了兩本。而今年&#xff0c;我決定嘗試一種新的方式——使用待辦計劃軟件來…

大學生數學競賽教程(蒲和平)

大學生數學競賽教程(蒲和平) https://pan.baidu.com/s/1ytcIbVcZpof9WM1xa2dDfA 提取碼: kf2r 源文件來自于&#xff1a;大學生數學競賽教程【蒲和平】

谷粒商城實戰筆記-24-分布式組件-SpringCloud Alibaba-Nacos配置中心-命名空間與配置分組

文章目錄 一&#xff0c;命名空間1&#xff0c;簡介1.1&#xff0c;命名空間的主要功能和特點1.2&#xff0c;使用場景1.3&#xff0c;如何指定命名空間 2&#xff0c;命名空間實戰2.1&#xff0c;環境隔離2.2&#xff0c;服務隔離 二&#xff0c;配置集三&#xff0c;配置集ID…

【數據基礎】— 基于Go1.19的站點模板爬蟲的實現

目錄 1. 定義目標站點 2. 使用Go的庫 3. 發送HTTP請求 4. 解析HTML并提取數據 5. 存儲數據 6. 并發處理 示例代碼 基于Go 1.19的站點模板爬蟲實現通常涉及幾個關鍵步驟&#xff1a;定義目標站點、解析HTML頁面、提取所需數據、存儲數據以及可能的并發處理。下面我將詳細…

js原型和類---prototype,__proto__,new,class

原型和原型鏈 在js中&#xff0c;所有的變量都有原型&#xff0c;原型也可以有原型&#xff0c;原型最終都指向Object 什么是原型 在js中&#xff0c;一個變量被創建出來&#xff0c;它就會被綁定一個原型&#xff1b;比如說&#xff0c;任何一個變量都可以使用console.log打…

PostgreSQL 中如何實現數據的增量更新和全量更新的平衡?

文章目錄 一、增量更新與全量更新的概念增量更新全量更新 二、考慮的因素1. 數據量2. 數據更改的頻率和規模3. 數據一致性要求4. 系統性能和資源利用5. 業務邏輯和流程 三、解決方案&#xff08;一&#xff09;混合使用增量更新和全量更新&#xff08;二&#xff09;使用臨時表…

暑期旅游季必備,用這款客服神器應對爆棚的客流咨詢

解決暑期旅游客流高峰問題 暑期是旅游高峰季節&#xff0c;客流量劇增&#xff0c;客戶咨詢紛至沓來。在這個時候&#xff0c;如何高效處理客戶的咨詢成為每家旅游機構和景點不可忽視的挑戰。 聊天寶快捷回復助手是一款強大的工具&#xff0c;可幫助企業在客流高峰期快速回復客…

QDataStream的尷尬

最近在編寫一個網絡功能&#xff0c;需要將一個文件內容傳遞到客戶端并將改內容以文件形式保存下來。由于文件內容是個加密文件且采用了二進制形式于是客戶端就采用了QDataStream這個對象來保存文件。粗略的測試下來沒有什么問題&#xff0c;可是在獲取寫入的文件是否發現寫入的…

MemFire Cloud: 一種全新定義后端即服務的解決方案

在這個快節奏的互聯網時代&#xff0c;開發者們最希望的就是能夠省時省力地完成項目&#xff0c;快速上線。然而&#xff0c;搭建服務、開發接口API、處理各種后端問題&#xff0c;往往讓人頭疼不已。別擔心&#xff0c;現在有了MemFire Cloud&#xff0c;一款為懶人開發者量身…

計算機性能-系統架構師(二十七)

1、計算機評價主要性能指標有 時鐘頻率、&#xff08;&#xff09;、運算精度和內存容量等。 A丟包率 B端口吞吐量 C可移植性 D數據處理速率 解析&#xff1a; 計算機評價主要指標&#xff1a;時鐘頻率&#xff0c;運算速率&#xff0c;運算精度&#xff0c;內存的存儲容量…

制作電子名片的小程序系統源碼 快速生成電子名片

在當今數字化時代&#xff0c;傳統的紙質名片已逐漸被智能電子名片所取代。電子名片小程序作為一種基于微信生態的創新名片交換方式&#xff0c;憑借其便捷性、高效性和環保性&#xff0c;成為了眾多商務人士的首選。小編分享一個制作電子名片的小程序系統源碼&#xff0c;無憂…

malloc實現原理【Liunx】

malloc實現原理 malloc是什么&#xff1f;malloc,calloc, realloc的區別malloc的實現原理malloc的兩種實現方式為什么使用brk&#xff1f;為什么使用mmap&#xff1f; malloc怎么定界的malloc分配的是虛擬內存上的空間嗎&#xff1f; malloc是什么&#xff1f; 通過malloc&…

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud【翻譯與解讀】

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud 摘要 特征提取和匹配是許多機器人視覺任務的基本組成部分&#xff0c;如 2D 或 3D 目標檢測、識別和配準。2D 特征提取和匹配已取得巨大成功。然而&#xff0c;在 3D 領域&#xff0c;當前方法由于描述性差…

MySQL零散拾遺

mysql中大小寫敏感嗎&#xff1f; MySQL數據庫默認情況下是不區分大小寫的&#xff0c;這意味著在查詢時&#xff0c;字段名和值的大小寫不會影響結果。然而&#xff0c;這種默認行為可能會根據操作系統和配置的不同而有所變化。 在某些操作系統上&#xff0c;比如Linux&…

在android13的系統中出現INSTALL_FAILED_BAD_PERMISSION_GROUP安裝失敗的問題解決

在android13的系統中&#xff0c;編譯能過&#xff0c;但是在真機運行出現無法安裝的問題的問題&#xff0c;AS中提示出現INSTALL_FAILED_BAD_PERMISSION_GROUP的問題&#xff0c;找了好多資料都沒有找到具體的解決方案&#xff0c;記錄一下 解決方法&#xff1a; 在manifest中…

初識神經網絡之我的理解

初識神經網絡之我的理解 個人理解分析一個神經網絡相關python代碼參考文檔個人理解 個人認為神經網絡是一個分類問題,即通過多維的參數通過合適的計算來得到一個確定的輸出。 在數學層面看來是從高維度的參數降維為低維度的分類的過程。至于輸出的結果如何達成我們想要的或者…

Linux操作系統安全分析與防護

Linux操作系統安全機制 Linux操作系統由于其開放源代碼和廣泛應用&#xff0c;在服務器和嵌入式系統中占有重要地位。為了確保Linux系統的安全&#xff0c;必須了解并實施一系列有效的安全機制。這些機制包括用戶身份驗證、訪問控制、數據加密、日志和審計、安全更新等。 一、…

2024前端面試題之Vue3

2024前端面試題之Vue3 在面試具有五年經驗的前端工程師時&#xff0c;對于 Vue 3 的掌握程度是一個重要的考核點。本文將提供一系列針對這一級別工程師的 Vue 3 面試題&#xff0c;并附上詳細的解析&#xff0c;幫助面試官全面評估候選人的技術實力和項目經驗。 一、Vue 3 基礎…