hexo 畅言

Reference

https://www.zhihu.com/question/31377141

https://help.github.com/articles/setting-up-an-apex-domain/

前言

本文将梳理出如何让 hexo 使用畅言;将整体需要实施的步骤记录如下,

首先,因为注册畅言,需要备案,所以,需要做的是,申请一个域名,然后将该域名重定向到 comedsh.github.io 上;

域名相关

申请域名

使用万维网申请,不过现在万维网已经被阿里收购了,所以需要登录阿里云进行申请;这里我申请的域名就是 shangyang.me

域名重定向

CNAME 设置

首先,需要在 hexo 本地工程中 source 目录中添加一个 CNAME 文件,

1
shangyang.me

注意,内容不要写前缀www.,否则只能映射 www.shangyang.me;github 的映射原理是,当通过 comedsh.github.io 进行访问的时候,会通过 CNAME 中配置的域名进行转发,这里会转发至 shangyang.me;

然后通过命令hexo generate --deploy提交到 github 仓库中;

CNAME 的内容如下,

域名解析

进入阿里云的云解析,找到相关域名,点击解析

然后添加如下的解析记录,

两条 A 记录,一条 CNAME 记录,这样,就可以将 shangyang.me 域名映射到 comedsh.github.io 上面了;为什么需要输入上述两条 A 记录,参考官方解释 https://help.github.com/articles/setting-up-an-apex-domain/#configuring-a-records-with-your-dns-provider

添加好映射以后,等域名解析成功激活以后,阿里云解析很快,一般 1、2 分钟就激活了;激活以后,再次输入 shangyang.me 就可以访问到 comedsh.github.io 了;

备注,后面试了试,发现不添加 CNAME 也是可以的;而且这里也本不应该家 CNAME,因为该条记录的意思是,将 www.shangyang.me 解析到 comedsh.github.io 上,所以,这个关系是不对的;

域名备案

  1. https://beian.aliyun.com/ 进入备案平台
  2. 开始备案
  3. 验证备案类型
    卡在这里了… 选择产品类型,要知道,github 使用的是国外的服务器,是不能备案的.. 所以,只能变通的去备案了,先注册一个国内的服务器,比如 ECS.. 然后搭建你的应用,通过备案,拿到备案号,让后再映射到你的 github 上…. 痛苦..

畅言相关

注册

去官网注册 https://changyan.kuaizhan.com/; 不过注册的时候需要提交备案号,否则只能试用期 14 天;注册完以后,会得到 client_id (appid) 和 client_secret(conf);

设置 jacman

在本地 hexo 的 jacman 中配置畅言的 javascript 使其生效,

配置 comment.ejs

  1. 路径

  2. 配置内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <!--
    <% if (theme.duoshuo_shortname && page.comments){ %>
    <section id="comments" class="comment">
    <div class="ds-thread" data-thread-key="<%- page.path %>" data-title="<%- page.title %>" data-url="<%- page.permalink %>"></div>
    </section>
    <% } %>
    <% if( (config.disqus_shortname || theme.disqus_shortname) && page.comments) { %>
    <section id="comments" class="comment">
    <div id="disqus_thread">
    <noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    </div>
    </section>
    <% } %>
    -->

    <section id="comments" class="comment">
    <div id="SOHUCS" sid="<%= page.title %>"></div>
    <script>
    (function(){
    var appid = 'your appid',
    conf = 'your app secret';
    var doc = document,
    s = doc.createElement('script'),
    h = doc.getElementsByTagName('head')[0] || doc.head || doc.documentElement;
    s.type = 'text/javascript';
    s.charset = 'utf-8';
    s.src = 'http://assets.changyan.sohu.com/upload/changyan.js?conf='+ conf +'&appid=' + appid;
    h.insertBefore(s,h.firstChild);
    window.SCS_NO_IFRAME = true;
    })()
    </script>
    </section>

    注释掉之前默认的 duoshuodisqus;添加畅言片段如下,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <section id="comments" class="comment">
    <div id="SOHUCS" sid="<%= page.title %>"></div>
    <script>
    (function(){
    var appid = 'your appid',
    conf = 'your app secret';
    var doc = document,
    s = doc.createElement('script'),
    h = doc.getElementsByTagName('head')[0] || doc.head || doc.documentElement;
    s.type = 'text/javascript';
    s.charset = 'utf-8';
    s.src = 'http://assets.changyan.sohu.com/upload/changyan.js?conf='+ conf +'&appid=' + appid;
    h.insertBefore(s,h.firstChild);
    window.SCS_NO_IFRAME = true;
    })()
    </script>
    </section>

    注意,如果你的网站使用的是 https 协议,那么引用 changyan 脚本的时候同样需要使用 https,否则不能显示;

    1
    s.src = 'https://assets.changyan.sohu.com/upload/changyan.js?conf='+ conf +'&appid=' + appid;