【多說(shuō)下線怎么辦】一步搭建自己的第三方評(píng)論系統(tǒng)

雖然也在意料之中,但是收到多說(shuō)郵件還是覺(jué)得有些遺憾。對(duì)于靜態(tài)博客來(lái)說(shuō),沒(méi)有評(píng)論模塊就有些尷尬了。

那么如何用其他工具代替多說(shuō)呢?大家第一時(shí)間想到的基本都是Disqus這種網(wǎng)站,但是被墻后,訪問(wèn)起來(lái)很困難,加載速度不好。

國(guó)內(nèi)替代品

在開始搭建自己的評(píng)論系統(tǒng)之前,先了解一下國(guó)內(nèi)其他第三方評(píng)論系統(tǒng),比較著名的就是這些:

但是它們?nèi)坎恢С諬TTPS,所以我決定自己搞個(gè)第三方評(píng)論系統(tǒng)。

多說(shuō)下線通知郵件

Isso

Isso是一個(gè)輕量級(jí)的類似Disqus第三方評(píng)論系統(tǒng),它允許匿名評(píng)論、注冊(cè)評(píng)論、回復(fù)郵件通知以及自定義外觀等功能。它的接口設(shè)計(jì)和Disqus高度相似,所以要集成這個(gè)評(píng)論系統(tǒng)只需要在Disqus接口上改幾個(gè)單詞,非常簡(jiǎn)單。

Isso是基于Python寫的開源軟件,你可以隨意修改評(píng)論框外觀。

自定義外觀

1. 安裝

安裝?不,安裝什么的才不會(huì)讓你們做呢,我本來(lái)打算把整個(gè)Isso打包起來(lái)丟進(jìn)容器的,但是在Docker Hub 上看到已經(jīng)有人做了一個(gè)鏡像,而且做得相當(dāng)不錯(cuò),我沒(méi)什么好挑剔的,鏡像大小 17 MB。

我挺滿意的,所以直接拿來(lái)用了。

首先Isso是使用Sqlite驅(qū)動(dòng)的,所以我們使用 Docker 直接運(yùn)行即可。

安裝 Docker 和 Compose,不用廢話。

新建一個(gè)文件夾名為config,在里面新建一個(gè)配置文件isso.conf:

[general]
dbpath = /db/comments.db
host = https://zuolan.me
[server]
listen = http://0.0.0.0:8080/

下面是一個(gè)Compose配置文件:

version: '2'
services:
  isso:
    image: wonderfall/isso
    environment:
      - GID=1000
      - UID=1000
    volumes:
      - ./config:/config
      - ./db:/db
    ports:
      - "8080:8080"

保存為docker-compose.yml然后執(zhí)行:

dokcer-compose up -d

搞定之后就可以通過(guò)8080端口的接口使用Isso評(píng)論系統(tǒng)了。

啟動(dòng)后目錄應(yīng)該是這樣的:

.
├── config
│   └── isso.conf
├── db
│   └── comments.db
└── docker-compose.yml

2 directories, 3 files

2. 配置Nginx

直接訪問(wèn)8080好尷尬,給它綁個(gè)網(wǎng)址吧。

server {
    listen       [::]:80;
    listen       [::]:443 ssl;
    server_name  example.com;
    root         /var/www/example.com;

    location /isso {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Script-Name /isso;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://localhost:8080;
    }
}

配置不用我說(shuō)了吧,上面配置中,我們可以通過(guò)example.com/isso使用接口了。

3. 設(shè)置

Isso服務(wù)已經(jīng)運(yùn)行了,當(dāng)然直接訪問(wèn)8080端口是沒(méi)有什么界面的,只有一個(gè)API接口。接下來(lái)我們要在靜態(tài)博客中集成這個(gè)評(píng)論系統(tǒng)。

如果你使用的主題是純HTML,那么嵌入下面兩句即可:

<script data-isso="http://comments.example.tld/"
        src="http://comments.example.tld/js/embed.min.js"></script>

<section id="isso-thread"></section>

如果你是Jade或者Ejs等模板引擎,那么復(fù)制一下Disqus的代碼,替換為Isso即可,例如Jade格式。

下面是Disqus的Jade模板:

if theme.disqus
    a#comments
    #disqus_thread
    script.
        var disqus_shortname = '#{theme.disqus}';
        var disqus_identifier = '#{page.path}';
        var disqus_title = '#{page.title}';
        var disqus_url = '#{config.url}/#{page.path}';
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async)

現(xiàn)在改寫為Isso評(píng)論系統(tǒng)(類似):

if theme.isso
    a#comments
    .isso-thread
    script.
        var isso-path = {short_name:"#{theme.isso}"};
        (function() {
            var isso = document.createElement('script');
            isso.type = 'text/javascript';ds.async = true;
            isso.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//example.com/isso/js/embed.js';
            ds.charset = 'UTF-8';
            (document.getElementsByTagName('head')[0] 
             || document.getElementsByTagName('body')[0]).appendChild(ds);
        })();

4. 評(píng)論計(jì)數(shù)

如何在首頁(yè)中顯示文章計(jì)數(shù)?
加入下面一句到頁(yè)面中:

<a href="/my-uri.html#isso-thread">Comments</a>

最后

如果你不滿意這個(gè)Isso,還可以使用其他開源評(píng)論系統(tǒng)。

我只負(fù)責(zé)丟鏈接:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,641評(píng)論 19 139
  • 情深緣淺 枯木逢春發(fā)新芽,幾時(shí)風(fēng)來(lái)葉落盡。 情深緣淺徒留傷,怨天尤地?zé)o奈何。
    高山玫瑰閱讀 434評(píng)論 0 3
  • 美麗的邂逅, 在紛飛的雨季降臨, 劃破年華的愛(ài)戀, 在陌生的世界里, 演繹相守一生的憧憬。 相攜的雙手, 套上命運(yùn)...
    不思量小孩閱讀 349評(píng)論 2 4
  • 2月份是一個(gè)轉(zhuǎn)折月,學(xué)生開始上學(xué),北上廣深漂族開始繼續(xù)漂起來(lái),就連主流媒體最近都有好幾篇評(píng)論是關(guān)于漂或留、大城市或...
    Anny閱讀 616評(píng)論 2 4
  • 毫不意外的,外出的機(jī)會(huì)又是拜停電所賜。聽說(shuō)過(guò)很多關(guān)于動(dòng)物城的好評(píng),看過(guò)很多次樹懶閃電的梗,帶著大約有一公斤的好感買...
    會(huì)飛的牛先生閱讀 401評(píng)論 0 0

友情鏈接更多精彩內(nèi)容