1. 從「多說」停運說起

  2017年3月21日,國內著名的第三方評論系統「多說」發布了一則重要通知:

  因公司業務調整,非常遺憾的向大家宣布多說項目即將關閉。 我們將於2017年6月1日正式關停服務,在此之前您可以通過後台的數據導出功能導出自己站點的評論數據。 對此給您造成的不便,我們深表歉意,感謝您的一路相伴。

  這則通知也讓很多還在堅持做獨立博客的博主們憂傷,特別是各類採用靜態博客站點的博主,大部分都是多說的用戶。多說的停運,意味著大家不得不關閉或者更換評論系統了。


  最早的各類動態博客,比如WordPress、Z-blog,還有國內風靡的[Emlog](emlog個人博客系統 - 基於php的blog博客程序及CMS建站系統)(我一直用它很多年,今年才換成Hexo)等等,都是自帶評論系統的,那時第三方評論系統初現端倪,但使用量不太大。後來隨著靜態博客的流行,以及適應各種社交場合的需要,像國外的 Disqus,國內的多說、有言這些第三方評論逐漸取代第一方評論系統流行開來。


  我個人也是在把博客系統換成 HEXO 之後才開始正式使用多說,當時搬遷的時候為了把Emlog的評論導入到多說還是費了一些周折([詳見此文](從EMLOG搬家到HEXO)),沒想到才沒安定多久就要見證它停運了。

2. 尋找代替者

  其實從收到多說的公告的時候就想著要早點搬遷評論系統了,但是這段時間各種婚禮籌備等事情佔用了大量精力,以致於拖到現在才來完成這項工程。

  我使用的 Yelee 主題直接支持多說、Disqus、友言三個第三方評論系統,這也基本上是目前國內主流的第三方評論系統了,除此之外還有一些別的小眾的,我也挑了一些備選。[1]

2.1 第三方評論系統

Disqus


  說到第三方評論,這方面的巨頭就是 Disqus 了,很多 HEXO 用戶也是採用 Disqus 作為評論系統。我使用的 Yelee 主題支持的三大第三方評論系統之一就有它,而且因為用戶多,自然各種導入方案就多,可以直接把多說的數據導入 Disqus,實現無縫啟用。然而最無奈的問題就是,Disqus 被GFW牆掉了,所以只好無奈的不選擇它。


友言


  友言應該是比較接近多說的一款了,不過總感覺是快要步入多說後塵的產品,而且不知道是我瀏覽器的原因還是怎麼的,點擊註冊老沒反應,不得已只好放棄……


其他


  其他還有搜狐旗下的「暢言」、網易旗下的「雲跟帖」等等,因為界面太違和了就沒用。還有韓國的「來必力」,無法支持導入多說的數據,也就此作罷。

2.2 自建獨立評論系統

  在第三方的評論系統裡面選完發現沒有合適的,覺得方便起見還是要自己搭建獨立的評論系統好一些。自建的評論系統挑了 ISSO 和 HashOver。ISSO 是運行在 Python 環境下的系統,感覺專門為了它再配置一個環境太麻煩,最終還是選擇了用 HashOver。


HashOver


  HashOver 是一個 PHP 環境下的評論系統,支持 XML、MySQL、SQLite 幾種數據儲存方式,調用也十分簡單。更何況主機上已經配置好了 PHP 環境,應用上去比較簡單。

3 搬遷評論系統

3.1 安裝 HashOver

  安裝 HashOver 還是很簡單的,首先到 HashOver 的[Github倉庫](jacobwb/hashover-next)把源碼下載下來,然後直接放到網站根目錄即可。然後需要配置一下`hashover`目錄下的`setting.php`文件,根據需要修改一下所需的自定義參數即可。

3.2 把 HashOver 添加到 HEXO

  這一步需要通過修改 HEXO 的主題源碼來實現,先找到主題的`article.ejs`文件,在我使用的主題中是採用這樣的 IF 嵌套來選擇具體使用哪個評論的:


<% if (!index && post.comments){ %>
<% if (theme.duoshuo.on) { %>
<%- partial(comments/duoshuo, {
key: post.path,
title: post.title,
url: config.url+url_for(post.path),
}) %>
<% } else if (theme.youyan.on) { %>
<%- partial(comments/youyan) %>
<% } else if (theme.disqus.on) { %>
<%- partial(comments/disqus, {
shortname: theme.disqus.shortname
}) %>
<% } else if (config.disqus_shortname) { %>
<%- partial(comments/disqus, {
shortname: config.disqus_shortname
}) %>
<% } %>
<% } %>

  通過判斷`_config.yml`文件中的開關,來確定使用哪種評論系統,再調用`comments`文件夾下的不同代碼。這樣的話先在`_config.yml`中加入一個給 HashOver 使用的開關:


hashover:
on: true

  然後在`article.ejs`評論部分的IF嵌套中加入一個 HashOver 的選項:


<% } else if (theme.hashover.on) { %>
<%- partial(comments/hashover) %>
<% } %>

  再在它的`comments`目錄下新建一個`hashover.ejs`文件,在裡面插入 HashOver 的調用代碼即可,比如最簡單的一句話`<script type="text/javascript" src="/hashover/hashover.js"></script>`,不過我在這裡為了實現非同步載入以及後續的CSS控制,還是這樣寫的:


<section class="hashover" id="comments">
<script type = "text/javascript">(
function() {
var s = document.createElement(script),
t = document.getElementsByTagName(script)[0];
s.type = text/javascript;
s.async = true;
s.src = "/hashover/hashover.js";
t.parentNode.insertBefore(s, t);
})();
</script>
<div id="hashover"></div>
</section>

  都完成之後重新生成一下 HEXO 的頁面,發現評論系統已經在頁面下了。


3.3 導入多說數據

  安裝完評論系統就該轉移數據了,把多說的數據完全轉移到 HashOver 中還是要借用一些手段的。


把多說數據導入 Disqus


  這裡借用 Disqus 做一個跳板來轉移數據,轉移完這一步也可以直接使用 Disqus 這個評論系統了。[2]

1. 在 Disqus 上面建立一個站點。


2. 登錄多說的後台,將數據導出為`export.json`。


3. 下載轉換腳本文件[migrate.php](urouge.github.io/assets)。


4. 將他們一起傳到 PHP 伺服器上,在伺服器上這個目錄執行`php -f migrate.php`,運行完後會生成一個` disqus.xml`文件。


5. 在 Disqus 後台導入`disqus.xml`文件。


  這樣就把多說的數據全部導入到 Disqus 中了。


將 Disqus 格式數據導入 HashOver


  正是因為在網上找到了有別人寫好的轉換程序,才讓我最終打定主意用 HashOver。[3]


1. 在這個[Github倉庫](gucheen/disqus-to-hashover-next)下載 JAVA 源碼到 NetBeans 或 Eclipse 中編譯(記得選擇JAXB插件)


2. 在 Disqus 後台將數據導出為`comments.xml`放到編譯好的程序目錄。

3. 運行編譯好的 JAVA 程序,會生成`hashoverpage`目錄以及各個 XML 文件。


4. 將生成的`page`目錄上傳到伺服器上 HashOver 所在目錄即可。


  在這裡可能第一步會比較讓人疑惑,為什麼不能直接用上一步從多說導出的`disqus.xml`文件。其實上一步中導出的`disqus.xml`是被 Disqus 支持的 WordPress 格式,並非直接 Disqus 的格式,所以要分兩步來再轉。


手動調整


  因為我的評論經歷過從 Emlog 到多說,再從多說到 Disqus 再到 HashOver,所以一些嵌套關係被打亂了,手動調整一下之前的`page`目錄下的文件名為其嵌套就可以了。

4 最終效果

  最終調整完的評論效果像這樣,基本上可以滿足日常的使用了,以後再慢慢去調整相應的CSS樣式來更好的適應主題風格就可以了。


  經歷了動態博客原生評論到採用第三方評論,再到自己在動態環境搭建博客系統供給靜態博客使用,總有一種走了一大圈又回到原點的感覺。


  真是生命不息,折騰不止啊……

5 參考資料

1.第三方評論系統推薦 - 水八口記

2.多說評論遷移至Disqus - Urouge


3.遷移評論系統到 hashover - PasteBin of GC

博客原文:HEXO評論從「多說」搬遷到Hashover


推薦閱讀:
查看原文 >>
相关文章