通过swiftype可以实现自建的hexo网站的内部文章内容搜索。

添加Engine

提供两种,一种网站内搜索,一种app内搜索,选择网站搜索,输入自己的网站地址,如我的为:
mark
随后还要填写一个名称,任意,我填的“xxpcbWebSearch”

预览与安装

按照提示,点击PREVIEW按钮,可能比较慢,我没等它出来预览结果就选择Step2了
mark
Step2会有一些配置可以改,默认就好,最后会出来如下一段代码:
mark
注意图片中最后一行有个</script>不知什么原因没显示出来

配置hexo中的jacman主题

_config.yml

位于themes->jacman->_config.ym,末尾处,有谷歌百度等搜索方法,将其enable全设为false,并在最后添加两行:

1
2
swift_search:
enable: true

header.ejs

位于位于themes->jacman->layout->_partical->header.ejs, 在40行左右有百度的搜索代码:

1
2
3
4
5
<% } else if(theme.baidu_search.enable){ %>
<form class="search" action="<%- theme.baidu_search.site %>" target="_blank">
<label>Search</label>
<input name="s" type="hidden" value= <%= theme.baidu_search.id %> ><input type="text" name="q" size="30" placeholder="<%= __('search') %>"><br>
</form>

在其下面添加类似的swift搜索代码:

1
2
3
4
5
<% } else if(theme.swift_search.enable){ %>
<form class="search" action="<%- config.root %>search/index.html" method="get" accept-charset="utf-8">
<label>Search</label>
<input type="text" id="search" class="st-default-search-input" maxlength="20" placeholder="Search" />
</form>

然后,在该文件的最后一行(</div>)和倒数第二行(</nav>)之间粘贴swift网站生成的那段代码,我的为:

1
2
3
4
5
6
7
8
9
10
			</nav>
<script type="text/javascript">
(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
})(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st');

_st('install','LoDyKRz9VvH9Xo2tRUyA','2.0.0');
</script>
</div>

测试效果

使用hexo g编译,hexo shexo d测试,我的测试效果如下:
mark