theme-kaze/hexo-theme-kaze

关于gitalk配置问题

Closed this issue · 5 comments

使用的hexo 5.20

当前gitalk配置:

kaze主题评论配置

gitalk:
    clientID: ********
    clientSecret: **********
    repo: blog-comments
    owner: 1kuxyz
    admin: 1kuxyz
    id: location.href
    distractionFreeMode: false
    language: zh-CN

公共github仓库:
https://github.com/1kuxyz/blog-comments
GitHub Application配置:

问题

1.无论在博客中哪篇文章下评论,最后这些评论都会在所有文章评论中显示,github的issues中,也只会有一贴issues,Label是Gitalk和location.href。
2.只有用owner的github账号在博客发了第一条评论,访客才能看到文章下正常的评论区;如果博客中(也就是github中的issues中)没有第一条评论时,显示如图

  1. 我们并未对 gitalk 做仔细的测试,现在已在 devel 分支修复,可以获取最新的 devel 版本。

如果想自己修改可以找到 kaze/layout/_partial/plugins/comments/gitalk.ejs,将本身 new 中的内容修改为:

var gitalk = new Gitalk({
  clientID: '<%= theme.comment.gitalk.clientID %>',
  clientSecret: '<%= theme.comment.gitalk.clientSecret %>',
  repo: '<%= theme.comment.gitalk.repo %>',
  owner: '<%= theme.comment.gitalk.owner %>',
  admin: <%- JSON.stringify(theme.comment.gitalk.admin || []) %>,
  id: <%= theme.comment.gitalk.id %>,
  distractionFreeMode: <%= theme.comment.gitalk.distractionFreeMode %>,
  language: '<%= theme.comment.gitalk.language %>',
  labels: <%- JSON.stringify(theme.comment.gitalk.labels || []) %>,
  perPage: <%= theme.comment.gitalk.perPage || 10 %>
})
  1. 这应该是 gitalk 本身的特性,它通过 issue 来生成评论,当没有这个 issue 时 需要 owner 手动创建。

非常感谢你的解答,试了一下问题1已经解决了。问题2的确是gitalk的特性,没篇文章发布完,一定要owner在github登录状态打开一下文章,进而初始化生成对应的issues评论。
另外还有一个小问题:能否增加title参数,使初始化生成的issues以文本标题命名,这样比较好管理。我自己尝试修改了一下(如下),但没成功,是否哪里不对,还是有其他地方要改?
kaze/layout/_partial/plugins/comments/gitalk.ejs

var gitalk = new Gitalk({
		clientID: '<%= theme.comment.gitalk.clientID %>',
		clientSecret: '<%= theme.comment.gitalk.clientSecret %>',
		repo: '<%= theme.comment.gitalk.repo %>',
		owner: '<%= theme.comment.gitalk.owner %>',
		admin: <%- JSON.stringify(theme.comment.gitalk.admin || []) %>,
		id: <%= theme.comment.gitalk.id %>,
		title: <%= theme.comment.gitalk.title %>,
		distractionFreeMode: <%= theme.comment.gitalk.distractionFreeMode %>,
		language: '<%= theme.comment.gitalk.language %>',
		labels: <%- JSON.stringify(theme.comment.gitalk.labels || []) %>,
		perPage: <%= theme.comment.gitalk.perPage || 10 %>	
	})

_config.kaze.yml

  gitalk:
    clientID: **************
    clientSecret: ****************************
    repo: blog-comments
    owner: 1kuxyz
    admin: 1kuxyz
    id: location.pathname
    title: location.title
    distractionFreeMode: true
    language: zh-CN
    labels: ['Gitalk']
    perPage: 10  

location 是一个 Web API,可见 MDN文档location.pathname 用来获取 url 的字符串,但是并没有 location.title 这一 API。文章的标题可以通过 document.title 来获取,这在 gitalk 文档 也有说明。

不过需要注意的是,之前主题并没有对文章中的 title 进行处理,假如你的 kaze 版本是 v1.1.0-beta 以下,我们建议升级。假如没有升级打算想要手动修改,可以在 kaze/layout/_partial/head.ejs 中找到

<title><%- theme.title %></title>

将其修改为

<title><%- page.title || theme.title %></title>

之后在配置中

gitalk:
  ...
  title: document.title

应该就可以正常使用了

如果没有问题将关闭这个 issue

1. 我们并未对 gitalk 做仔细的测试,现在已在 `devel` 分支[修复](https://github.com/theme-kaze/hexo-theme-kaze/commit/99a35ce2016c4ce194334c729465aff2c62bc291),可以获取最新的 `devel` 版本。

如果想自己修改可以找到 kaze/layout/_partial/plugins/comments/gitalk.ejs,将本身 new 中的内容修改为:

var gitalk = new Gitalk({
  clientID: '<%= theme.comment.gitalk.clientID %>',
  clientSecret: '<%= theme.comment.gitalk.clientSecret %>',
  repo: '<%= theme.comment.gitalk.repo %>',
  owner: '<%= theme.comment.gitalk.owner %>',
  admin: <%- JSON.stringify(theme.comment.gitalk.admin || []) %>,
  id: <%= theme.comment.gitalk.id %>,
  distractionFreeMode: <%= theme.comment.gitalk.distractionFreeMode %>,
  language: '<%= theme.comment.gitalk.language %>',
  labels: <%- JSON.stringify(theme.comment.gitalk.labels || []) %>,
  perPage: <%= theme.comment.gitalk.perPage || 10 %>
})
1. 这应该是 gitalk 本身的特性,它通过 `issue` 来生成评论,当没有这个 `issue` 时 需要 owner 手动创建。

这项修改,在我的环境中不生效,我一直在使用v1.0.5,在这个版本上仅仅通过修改这个文件是不行的. 我最后的解决方法是,把整个kaze更新到最新版本才有效.