為hexo部落格新增基於gitment評論功能

detectiveHLH發表於2018-07-24

關於gitment

gitment其實就是利用你的程式碼倉庫的Issues,來實現評論。每一篇文章對應該程式碼倉庫中的
一個Issues,Issues中的評論對應你的部落格每篇文章中的評論。如果你是用github的部落格的話
用起來將會十分的方便。

註冊github應用

首先需要在這注冊一個OAuth Application, 請戳此處。在註冊的過程中,你需要輸入以下的東西:

Application name 隨意就好

Homepage URL 你的部落格地址,例如https://detectivehlh.github.io/

Application description 隨意就好

Authorization callback URL 也是部落格地址,例如https://detectivehlh.github.io/

輸入完成之後,點選註冊就OK了。成功之後就會拿到Client IDClient Secret,然後先進行一下步,暫時還不會用到這個。

修改主題配置檔案

下一步就是要修改你的部落格所使用的主題的配置檔案。定位到# Comments,新增如下程式碼。

gitment:
  enable: true
  mint: true
  count: true
  lazy: false
  cleanly: false
  language:
  github_user: detectiveHLH
  github_repo: detectiveHLH.github.io
  client_id: xxx
  client_secret: xxx
  proxy_gateway:
  redirect_protocol:

將上面程式碼的github_user和github_repo改成你自己的就可以了。

為gitment新增樣式和layout

開啟你所使用的主題的目錄。開啟layout/_partial/comments.ejs,在原檔案後加入如下程式碼。

<% if(theme.gitment.enable) { %>
<div id="gitment_title" class="gitment_title"></div>
<div id="container" style="display:none"></div>
<link rel="stylesheet" href="https://imsun.github.io/gitment/style/default.css">
<script src="https://imsun.github.io/gitment/dist/gitment.browser.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
  const myTheme = {
    render(state, instance) {
      const container = document.createElement(`div`);
      container.lang = "en-US";
      container.className = `gitment-container gitment-root-container`;
      container.appendChild(instance.renderHeader(state, instance));
      container.appendChild(instance.renderEditor(state, instance));
      container.appendChild(instance.renderComments(state, instance));
      container.appendChild(instance.renderFooter(state, instance));
      return container;
    }
  }

  function showGitment() {
    $("#gitment_title").attr("style", "display:none");
    $("#container").attr("style", "").addClass("gitment_container");
    var gitment = new Gitment({
      id: decodeURI(window.location.pathname),
      theme: myTheme,
      owner: `detectiveHLH`,
      repo: `detectiveHLH.github.io`,
      oauth: {
        client_id: `xxx`,
        client_secret: `xxx`
      }
    });
    gitment.render(`container`);
  }

  showGitment();
</script>
<% } %>

將上面程式碼中的owner、repo、oauth中的資訊換成你自己的就可以了,client_id和client_secret
就是第一步申請github應用得到的。我查了網上很多教程,都是需要點選按鈕才能顯示評論,我
做了一點改動,引用之後可以直接的顯示評論。然後開啟source/css/_partial/_gitment.styl,如果沒有就新建檔案。新增如下程式碼。

.gitment_title:hover {
  color: #fff;
  background: #0a9caf;
  background-image: initial;
  background-position-x: initial;
  background-position-y: initial;
  background-size: initial;
  background-repeat-x: initial;
  background-repeat-y: initial;
  background-attachment: initial;
  background-origin: initial;
  background-clip: initial;
  background-color: rgb(10, 156, 175);
}
.gitment_title {
  border: 1px solid #0a9caf;
  border-top-color: rgb(10, 156, 175);
  border-top-style: solid;
  border-top-width: 1px;
  border-right-color: rgb(10, 156, 175);
  border-right-style: solid;
  border-right-width: 1px;
  border-bottom-color: rgb(10, 156, 175);
  border-bottom-style: solid;
  border-bottom-width: 1px;
  border-left-color: rgb(10, 156, 175);
  border-left-style: solid;
  border-left-width: 1px;
  border-image-source: initial;
  border-image-slice: initial;
  border-image-width: initial;
  border-image-outset: initial;
  border-image-repeat: initial;
  border-radius: 4px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px;
}
.gitment_title {
  display: inline-block;
  padding: 0 15px;
  padding-top: 0px;
  padding-right: 15px;
  padding-bottom: 0px;
  padding-left: 15px;
  color: #0a9caf;
  cursor: pointer;
  font-size: 14px;
}

然後開啟source/css/style.styl,在原有檔案後面新增如下程式碼,引入gitment相關的樣式。

@import "partial/_gitment.styl"

結束

到此為止,更新你的部落格。就可以看到評論了。

個人部落格傳送門 detectiveHLH
github傳送門 detectiveHLH

相關文章