美文网首页iOS开发进阶实用工具
为博客添加 Gitalk 评论插件

为博客添加 Gitalk 评论插件

作者: BYQiu | 来源:发表于2017-12-19 18:09 被阅读142次

    前言

    由于 Disqus 对于国内网路的支持十分糟糕,很多人反映 Disqus 评论插件一直加载不出来。而我一直是处于翻墙状态的~(话说你们做程序员的都不翻墙用Google的吗😅,哈哈,吐嘈下)

    针对这个问题,我添加了Gitalk 评论插件。在此,非常感谢 @FeDemo 的推荐 。

    正文

    Gitalk 评论插件

    首先来看看 Gitalk 的界面和功能:

    Gitalk

    gitalk 使用 Github 帐号登录,界面干净整洁,最喜欢的一点是支持 MarkDown语法

    原理

    Gitalk 是一个利用 Github API,基于 Github issue 和 Preact 开发的评论插件,在 Gitalk 之前还有一个 gitment 插件也是基于这个原理开发的,不过 gitment 已经很久没人维护了。

    可以看到在 gitalk 的评论框进行评论时,其实就是在对应的 issue 上提问题。

    gitalk评论框 Github issue

    集成 Gitalk

    到这里,你应该对 Gitalk 有个大致的了解了,现在,开始集成 gitalk 插件吧。

    将这段代码插入到你的网站:

    <!-- Gitalk 评论 start  -->
    {% if site.gitalk.enable %}
    <!-- Link Gitalk 的支持文件  -->
    <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
    <script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script>
    
    <div id="gitalk-container"></div>
        <script type="text/javascript">
        var gitalk = new Gitalk({
    
        // gitalk的主要参数
            clientID: `Github Application clientID`,
            clientSecret: `Github Application clientSecret`,
            repo: `存储你评论 issue 的 Github 仓库名`,
            owner: 'Github 用户名',
            admin: ['Github 用户名'],
            id: '页面的唯一标识,gitalk会根据这个标识自动创建的issue的标签',
        
        });
        gitalk.render('gitalk-container');
    </script>
    {% endif %}
    <!-- Gitalk end -->
    

    我们需要关心的就是配置下面几个参数:

    clientID: `Github Application clientID`,
    clientSecret: `Github Application clientSecret`,
    repo: `Github 仓库名`,//存储你评论 issue 的 Github 仓库名(建议直接用 GitHub Page 的仓库名)
    owner: 'Github 用户名',
    admin: ['Github 用户名'], //这个仓库的管理员,可以有多个,用数组表示,一般写自己,
    id: 'window.location.pathname', //页面的唯一标识,gitalk 会根据这个标识自动创建的issue的标签,我们使用页面的相对路径作为标识
    

    当然,还有其他很多参数,有兴趣的话可以 点这里

    比如我就增加了这个全屏遮罩的参数。

    distractionFreeMode: true,
    

    创建 Github Application

    Gitalk 需要一个 Github Application点击这里申请

    填写下面参数:

    创建 Application

    点击创建

    获取 Client IDClient Secret 填入你的我们 Gitalk 参数中

    获取 Client ID`和 Client Secret[图片上传中...(屏幕快照 2017-12-19 下午5.52.41.png-9695fd-1513678968632-0)]

    当你参数都设置好,将代码推送到 Github 仓库后,没什么问题的话,当你点击进入你的博客页面后就会出现评论框了。

    当你用 github 帐号登录(管理员),并且第一次加载该会比较慢,因为第一次加载会自动在你 repo 的仓库下创建对应 issue。

    比如说这样:

    当然,你也可以手动创建issue作为 gitalk评论容器。只要有 Gitalk 标签 和 id 对应标签就可以。比我我自己创建的 About issue

    结语

    最后说几句吐嘈几句, Gitalk 需要你点开每篇文章的页面才会创建对应的 issue,对我来说真是个糟糕的体验(文章有点多~)。

    当然,也有解决办法,这篇 自动初始化 Gitalk 和 Gitment 评论,就解决了这个问题。

    最后,给个小星星~

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1s0outnal9xg1

    相关文章

      网友评论

      • 魔力鸟999:那段代码是加到哪个文件中啊
      • LucasJin:请问大神,我跟你一样也是一个http的网站,我在js里面加入了那段代码,可是一直是gitalking 进度框。查看控制台显示unauthorized.

        可能是什么情况啊?github repo也没有错,你上面写的把代码传到repo是值什么代码?

        ```
        var gitalk = new Gitalk({
        clientID: '4ed238d3f512e5a2018a',
        clientSecret: 'a586b65b9ea52a94e3b2426dced12dc1592ea6d7',
        repo: 'Strange-AI.github.io',
        owner: 'Strange-AI',
        admin: ['jinfagang', 'Strange-AI'],
        id: vm.currentAiCode.code_title,
        distractionFreeMode: false,
        title: vm.currentAiCode.code_title,
        });
        gitalk.render('gitalk-container');
        ```
        LucasJin:@魔力鸟999 哪段代码?看下我的博客上写的:jinfagang.github.io
        魔力鸟999:请问这段代码是加入哪个文件中

      本文标题:为博客添加 Gitalk 评论插件

      本文链接:https://www.haomeiwen.com/subject/smsiwxtx.html