yilia主题添加gitalk

之前用过一段时间的畅言和valine,总体感觉一般,valine虽说很好用,但是需要leacloud,不是特别方便,所以最后选择了gitalk。

但是在gitalk集成在yilia上是,却出现了一些问题。

故此写下,也希望可以帮助别的博主。

问题就是gitalk的id不能超过50个字符,然后id在采用location.pathname时,中文会出现乱码的情况,这就导致了只要标题稍长,gitalk就无法建立新的issue,并报错。

所以首先说,gitalk的集成方法。

第一步

在github上申请得到application,点击

img

获取到Client ID和Client Secret

img

文章在这里主要参考的是简书作者的文章。

然后在你的github上新建一个repository。

第二步

在yilia的目录中新建layout/_partial/post/gitalk.ejs。

在其中添加以下代码,也是就是解决最初问题的方案。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>

<div id="gitalk-container"></div>

<script type="text/javascript">
var gitalk = new Gitalk({
clientID: '<%= theme.gitalk.clientID %>',
clientSecret: '<%= theme.gitalk.clientSecret %>',
repo: '<%= theme.gitalk.repo %>',
owner: '<%= theme.gitalk.owner %>',
admin: '<%= theme.gitalk.admin %>',
id: document.title
#采用此种方法(将被location.pathname更换为document.title)就可避免上述的坑
})
gitalk.render('gitalk-container')
</script>

之后将以下一号代码插入,到article.ejs中的二号位置中。

1
2
3
4
5
    
<!-- 一号代码 -->
<% if (theme.gitalk.enable){ %>
<%- partial('_partial/post/gitalk') %>
<% } %>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<% if (theme.gitment_owner && theme.gitment_repo &&theme.gitment_oauth && theme.gitment_oauth.client_id && theme.gitment_oauth.client_secret){ %>
<%- partial('post/gitment', {
key: post.slug,
title: post.title,
url: config.url+url_for(post.path)
}) %>
<% } %>

<!-- 二号位置 -->


<!-- end -->

<% } %>

之后在,在yilia的根目录配置文件gitment的配置下面中,添加:

1
2
3
4
5
6
7
8
gitalk:
enable: true #用来做启用判断可以不用
#autoExpand: false # 是否自动展开评论框
owner: '' #Github 用户名,
repo: '' #储存评论issue的github仓库名
admin: [''] #Github 用户名,
clientID: '' #`Github Application clientID`
clientSecret: '' #`Github Application clientSecret`

填进去相关信息,即可。

作者

Mch Wang

发布于

2019-04-02

更新于

2021-09-12

许可协议

评论