Google Custom Search and Ghost Excerpt

总结一下最近更新。

因为Ghost本身没有搜索功能,之前包括我在内的很多用户都是用Swiftype提供的索引服务来做搜索。最近Swiftype业务调整,直接砍了免费版,收费版从每月$299起跳,一跃成为了贵族服务。所以我只能另寻出路。

Swiftype那个前端插件的体验我是相当喜欢的,所以这次决定在其基础上集成Google Custom Search Engine的JSON接口来拯救宅谈的搜索。

思路相当简单,取回JSON数据以后更新列表和metadata就是了。Demo看效果就用宅谈吧。源码也已经放到Github Repo,欢迎取用。

主题里Google Custom Search默认是启用的。顾虑墙的问题、有更好的解决方案或者单纯不想要的话可以在app.js里改option为false。

以后有空的话再做别的搜索服务的API吧,比如Bing。

接下来是很多用户要求的适合中文的截断功能。因为我不想改Ghost源码,所以在前端用regex暴力截了。如果觉得这种做法太简粗或者单纯不需要这个功能,改option为false即可。

此外我删除了位于post.hbs和page.hbs的Disqus代码。有些用户取用主题的时候没有更改这些文件,导致我的disqus crawler抓了很多别站的页面。今后请使用Ghost的code injection来嵌入第三方插件。对于Disqus来说,请在footer嵌入以下代码:

(function() {
  var disqus_username = 'YOUR_DISQUS_USERNAME'; 
  var d = document, s = d.createElement('script');
  s.src = '//' + disqus_username + '.disqus.com/embed.js';
  s.setAttribute('data-timestamp', +new Date());
  if ($('body').hasClass('post-template')) {
    (d.head || d.body).appendChild(s);
  }
})();

祝大家开学/开工愉快。

Update:

现在Hexo版也支持Google Custom Search。同时Hexo版加入了本地搜索功能,可以在_config.yml设置选择哪一种搜索。