之前用过一段时间的畅言和valine,总体感觉一般,valine虽说很好用,但是需要leacloud,不是特别方便,所以最后选择了gitalk。
但是在gitalk集成在yilia上是,却出现了一些问题。
故此写下,也希望可以帮助别的博主。
问题就是gitalk的id不能超过50个字符,然后id在采用location.pathname时,中文会出现乱码的情况,这就导致了只要标题稍长,gitalk就无法建立新的issue,并报错。
所以首先说,gitalk的集成方法。
第一步
在github上申请得到application,点击
获取到Client ID和Client Secret
文章在这里主要参考的是简书作者的文章。
然后在你的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`
|
填进去相关信息,即可。