Add Gitalk for comments in Hugo Blog

Gitalk is a comment plug based on Github issue api. Hugo can compile the Markdown files with themes and templates into static web files, such as CSS, HTML and JavaScript.

To use Gitalk in the Hugo blog, we need to add Gitalk related code as <div> into the HTML template. Then update the config.toml for Gitalk.

Create Github Application

Firstly, you should create Github Application on Github. Yon can refer to the official sites below for more information.

Then you can get Client ID and Client Secret.

Create Gitalk Comments Template

{{ if .Site.Params.enableGitalk }}
<div id="gitalk-container"></div>
<link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
<script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
<script>
  const gitalk = new Gitalk({
    clientID: '{{ .Site.Params.Gitalk.clientID }}',
    clientSecret: '{{ .Site.Params.Gitalk.clientSecret }}',
    repo: '{{ .Site.Params.Gitalk.repo }}',
    owner: '{{ .Site.Params.Gitalk.owner }}',
    admin: ['{{ .Site.Params.Gitalk.owner }}'],
    id: location.pathname, // Ensure uniqueness and length less than 50
    distractionFreeMode: false // Facebook-like distraction free mode
  });
  (function() {
    if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
      document.getElementById('gitalk-container').innerHTML = 'Gitalk comments not available by default when the website is previewed locally.';
      return;
    }
    gitalk.render('gitalk-container');
  })();
</script>
{{ end }}

I’m using the Mainroad theme, so I just overwrite the comments.html with the code above.

Update config.toml

[params]
  enableGitalk = true
  
[params.gitalk]
    clientID = "[Client ID]" # Your client ID
    clientSecret = "[Client Secret]" # Your client secret
    repo = "" # The repo to store comments
    owner = "" # Your GitHub ID
    admin= "" # Required. Github repository owner and collaborators. (Users who having write access to this repository)
    id= "location.pathname" # The unique id of the page.
    labels= "gitalk" # Github issue labels. If you used to use Gitment, you can change it
    perPage= 15 # Pagination size, with maximum 100.
    pagerDirection= "last" # Comment sorting direction, available values are 'last' and 'first'.
    createIssueManually= false # If it is 'false', it is auto to make a Github issue when the administrators login.
    distractionFreeMode= false # Enable hot key (cmd|ctrl + enter) submit comment.
  • replace [Client ID] with Github Application’s Client ID
  • replace [Client Secret] with Github Application’s Client Secret
  • set repo to your blog address
  • set owner and admin to your GitHub ID