为Ghost博客扩展代码高亮、数学公式、页面统计、评论

前几天捣鼓了一下博客首页,接下来再丰富一下博客页面的功能与内容。由于我所使用的Ghost博客专注于轻量简洁,因此标题中提到的功能在Ghost中默认均不支持。下面将逐个介绍一下如何为Ghost扩展这些功能。

代码高亮

代码高亮的方案很多,我在Hexo的某个主题上注意到了highlight.js这个插件。

这个插件默认支持23中主流编程语言以及100多种代码高亮主题,基本满足你的需求。还不满意?你可以在官网选择你希望支持的编程语言进行定制。

我使用官网介绍的CDN方式嵌入highlight.js。在网页head标签下插入下面两行代码:

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css">  
    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>

其中第一句下载的是主题样式文件,default是默认主题,我自己改成了monokai-sublime。

然后在body结束位置插入启用代码即可,插件可以自动检测代码所使用的语言。

<script>hljs.initHighlightingOnLoad();</script>  

更多配置可以查阅其官网,不在此赘述。

下面展示一下简单的JavaScript代码被高亮后的效果:

/**
 * 去除obj里面的空项,若全为空,则返回null
 **/
function getPureObject (obj) {  
  let newObj = {};
  let isEmpty = true;
  for (let key in obj) {
    let value = typeof obj[key] === 'string' ? obj[key].trim() : obj[key];
    if (value) {
      newObj[key] = value;
      isEmpty = false;
    }
  }
  return isEmpty ? null : newObj;
}

数学公式

引入数学公式支持是考虑到接下来我将可能写一些数学相关的文章。目前发现MathJax是口碑比较好的插件,其使用方法也很简单。

使用CDN方式在网页head插入MathJax的代码就完成安装工作。

<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML'></script>  

使用的时候MathJax默认会识别两种标记$$ ... $$\( ... \),并把其中的内容当成数学公式处理。这两种标记的区别:前者独立成行显示,如p标签;后者作为行中的一部分,如span标签。

需要提醒使用MarkDown写博客的人,反斜杠需要转移,即\( ... \)需要写成\\( ... \\),否则会MathJax会找不到内容。

MathJax针对这种情况提供了自定义起始标签的配置功能。在引入代码的位置插入配置内容即可。我这里使用$- ... -$代替默认的\( ... \)如下:

<script type="text/javascript" async    src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML">  
        MathJax.Hub.Config({
            tex2jax: {inlineMath: [['$-','-$'], ['\\(','\\)']]}
        });
    </script>

下面举个例子:

When $- a \ne 0 -$, there are two solutions to $- ax^2 + bx + c = 0 -$ and they are  
  $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

它的显示结果如下: When $- a \ne 0 -$, there are two solutions to $- ax^2 + bx + c = 0 -$ and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

页面统计

这里提到的页面统计专指在网页中显示网站的访问量,请注意区别于类似百度统计等数据分析平台。

在知乎和V2EX上看到网友推荐使用LeanCloud的比较多。这种方案相当于使用远程数据库做统计服务接口,需要额外多做一些工作。

我比较懒,希望能够找到一种简单代码注入就能实现的方案。在知乎的角落里看到别人介绍了不蒜子busuanzi.ibruce.info

看它的官网觉得更像个个人网站,目前未对外开放注册。反正这些I don't care,它号称两行代码就能显示统计内容完全满足了我的需要,因此就选择它了。

第一步:安装代码的方式:

<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js">  
</script>  

第二步:在合适的地方显示统计信息(自己根据id选择需要的字段)

<!-- 整站统计 -->  
<span id="busuanzi_container_site_uv">  
  本站总访问量<span id="busuanzi_value_site_pv"></span>次
  本站访客数<span id="busuanzi_value_site_uv"></span>人次
</span>  
<!-- 单页面统计 -->  
<span id="busuanzi_container_page_pv">  
  本文总阅读量<span id="busuanzi_value_page_pv"></span>次
  本文访客数<span id="busuanzi_value_page_uv"></span>人次
</span>  

评论

前些年多说几乎遍布每个个人网站,在此之前我也用过多说。但随着多说和网易云跟帖的倒台,我才开始关注其他的替代品,如畅言(需备案)、dispus(需翻墙)、来比力等。综合考虑,我选择了来比力livere.com

进入来比力官网首页,点击导航栏上的安装,选择City版(适合个人的免费版本),点击现在安装,提示需要登录(没账号先用邮箱注册)。 来比力City版

然后输入网站的基本信息即可生成代码。把代码插入你的网页适当的位置即可。

下次登录来比力官网可以进入你的管理后台查看和管理评论数据,如下图: 来比力管理后台

ChardLau

继续阅读此作者的更多文章